我现在使用的是RequireJS,如何在Chrome控制台中访问KnockOut ViewModel变量?
在使用RequireJS之前,我遵循了名称空间模式,将所有内容都隐藏在一个全局变量中。我可以通过在Chrome控制台中输入以下内容来访问全局: window.namespaceVar。
但是现在我使用的是RequireJS,我所有的变量都隐藏在require函数后面。
require(['knockout-2.2.0', 'jquery'], function (ko, jQuery) {
var ViewModel = function () {
var testVar = ko.observable(true);
};
ko.applyBindings(new ViewModel());
}
那么我该如何访问示例中testVar
的当前值呢?
发布于 2013-03-09 21:35:11
Knockout包括函数ko.dataFor
和ko.contextFor
,您可以通过它们访问给定元素的KO视图模型信息。
因此,在控制台中,您可以执行以下操作:
var vm = ko.dataFor(document.body);
在您的示例中,testVar
未公开,因此您仍然无法访问它。我假设你的只是一个样本,你的意思是:
var ViewModel = function () {
this.testVar = ko.observable(true);
};
现在,使用上面的方法,您可以通过执行vm.testVar()
来访问vm.testVar
及其值
下面是关于这些函数的文档:http://knockoutjs.com/documentation/unobtrusive-event-handling.html
下面是如何使用chrome:http://devillers.nl/quick-debugging-knockoutjs-in-chrome/调试KnockoutJS的分步指南
使用Chrome的$0_$4功能:https://developers.google.com/chrome-developer-tools/docs/commandline-api#0-4
发布于 2013-04-04 10:42:45
正如Ryan建议的那样,最快的方法是在控制台中使用ko.contextFor
和ko.dataFor
来查看dom上元素的绑定上下文。
还有一个非常有用的Chrome扩展,它使用了这个原理,叫做KnockoutJS上下文调试器,可以在这里找到:
Chrome Web Store - KnockoutJS Context Debugger
它允许您检查一个元素,并在elements窗格的侧边栏中查看其上下文。最有用的是在一个页面上有多个绑定上下文,或者非常嵌套的绑定上下文。
发布于 2013-10-18 13:02:16
Require就是没有全局变量:
require(["knockout"],function(ko){ window.ko=ko;});
再次引入全局变量
您可以在控制台中使用:
require("knockout").dataFor($0);
require("knockout").contextFor($0);
https://stackoverflow.com/questions/15310659
复制相似问题