javascript - 使用 Chrome 控制台通过 RequireJS 访问 Knockout ViewModel

标签 javascript knockout.js requirejs google-chrome-devtools

既然我使用了 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 的当前值?

最佳答案

Knockout 包含函数 ko.dataForko.contextFor,它们使您能够访问给定元素的 KO View 模型信息。

因此,在控制台中,您可以执行以下操作:

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 调试 KnockoutJS 的分步指南: http://devillers.nl/quick-debugging-knockoutjs-in-chrome/

使用 Chrome 的 $0_$4 功能:https://developers.google.com/chrome-developer-tools/docs/commandline-api#0-4

关于javascript - 使用 Chrome 控制台通过 RequireJS 访问 Knockout ViewModel,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15310659/

相关文章:

javascript - 在 node.js 中重新映射 require() 的本地路径

javascript - 我如何访问requirejs中定义之外的变量

javascript - 如何在 Chrome 中禁用 ES6 功能

javascript - 带有 javascript 的响应式 HTML 文本框

javascript - ko.toJSON() 在 MVC 中工作,但在 asp.net FORM 应用程序 "{item:"+ ko.toJSON(Product) + "}"中工作

javascript - 如何从输入字段获取值并将其分配给 View 模型中的 JavaScript 对象?

javascript - RequireJS with Knockout - 多次应用绑定(bind)

javascript - 在后台打开一个新标签?

javascript - 从 javascript 获取所有 uid 时出错

javascript - 将 JSON 映射到 observableArray 时出错