在 document.ready :
运行功能的代码中$(function() {
var vm = new ViewModel();
ko.applyBindings(vm);
});
我在哪里可以在层次结构中的窗口下找到变量 vm ?
答案 0 :(得分:3)
tl; dr:您无法从window
访问它,除非您将其放在那里。
在函数内部声明变量时,它是作用于函数的局部变量,而不是全局变量,因此在window
对象中不可用。您需要将变量设置为window
的属性。
示例:强>
$(function() {
var vm = new ViewModel();
ko.applyBindings(vm);
window.vm = vm;
});
答案 1 :(得分:2)
根据定义,变量vm
将不会在您的window
对象中提供。这是因为,在Javascript中,一个新函数(正如您所做的那样)创建了一个新范围。基本上,您的vm
变量是一个私有变量。
如果你想使这个功能可用,你有两个选项(贝司卡利相同,但看起来有点不同):
1 - 您可以在函数之外声明变量
var vm;
$(function() {
vm = new ViewModel();
ko.applyBindings(vm);
});
2 - 您可以将其附加到窗口对象
$(function() {
window.vm = new ViewModel();
ko.applyBindings(vm); // vm refers to the vm variable in your window object
});
最好不要以任何方式将变量附加到窗口对象。你可能想找到另一种方法去做你想做的事情。有可能在document.ready(你在做什么)或使用回调函数中执行你的所有代码。
答案 2 :(得分:1)
无处:您在函数内声明(使用var
)它是一个本地范围的变量。
如果您想在window
下使用它,请使用window.vm
代替var vm
。