用自调用函数声明KnockoutJS模型有什么区别
What are the differences between declaring a KnockoutJS model with self-invoking function?
我看到视图模型被声明为函数。我猜这是因为它可以更容易地引用闭包中的其他函数和变量吗?如果它是一个简单的键/值对象,则不能使用"this"来引用其他变量/函数。
但是,有两种方法可以使用函数声明模型。
var vm1 = function () {
this.mydata = ko.observable(null)
}
ko.applyBindings(new vm1());
然后还使用了一个自调用函数:
var vm2 = function () {
this.mydata = ko.observable(null)
}();
ko.applyBindings(vm2);
这两种方法之间有什么区别?我发现使用第二种方法会导致问题,因为我不确定KO是否可以"看到"vm2内部的属性,因为它们是私有的。但是,vm1中的属性是如何可见的呢?
我还想知道"揭示模块"模式是否与KO视图模型兼容,我是否应该使用它?
在您的第一个示例中,您正在声明vm1对象的一个新实例,这个实例指的是vm1实例
在第二个例子中,this指的是窗口对象,而不是vm2 的实例
然后是的,回答您自己的评论——第二个例子将只在窗口对象中创建一个名为mydata的属性。
相关文章:
- 当一个模型在骨干关系中被销毁时,销毁相关模型的最佳方法是什么?
- 将ng模型转发到指令中的元素的正确方法是什么
- 什么's ng模型和ng值之间的差异/不兼容性
- 在canjs中,根据任何模型实例的存在,有条件地显示胡子模板部分的最常用方法是什么
- 在Backbone.js'上设置属性的模式是什么;模型和视图
- 在 Backbone 中侦听和修改模型属性的正确方法是什么.js
- 在Voodoo.js中,什么事件触发了模型的“更新”功能
- 环回中的通用模型和服务器模型有什么区别
- 在主干模型中定义实例变量的正确方法是什么
- UI JavaScript在MVVM模型中属于什么位置(带有挖空)
- 将内容可编辑字段序列化为 JSON 对象以保存到模型的最佳方法是什么?
- 培根的评价模型是什么.js
- 创建新模型的正确控制器/视图模式是什么
- 主干模型上的初始化和构造函数有什么区别
- 使用 javascript/jQuery 在 zend 模型中调用 php 方法的最佳方法是什么?
- 获取此阵列模型的配对数据的最佳方式是什么
- 用自调用函数声明KnockoutJS模型有什么区别
- ng选项在点击时清除模型(和可见选项),在tarnation中是什么
- 用javascript创建消息模型的最佳方法是什么
- 对于基于服务器的应用程序,我需要在浏览器客户端上使用MVC模型的原因是什么