请浏览链接:http://jsfiddle.net/nn0mfe48/1/
这里我可以在使用对象文字时使用knockout WITH binding,但是当我将其更改为函数时,相同的代码不起作用。
作品:
var profileModel = {
first: ko.observable("Bob"),
last: ko.observable("Smith"),
};
不起作用:
var profileModel = function() {
this.firstname= ko.observable("Bob");
last: ko.observable("Smith");
};
我需要在代码中进行哪些更改才能使其正常工作。 我需要的小时是将knockout viewmodel对象传递给viewmodel并动态绑定值而不是硬编码值。
我已通过链接:Difference between knockout View Models declared as object literals vs functions
但无法理解如何在我的案例中使用。 希望我解释清楚,可以理解。在这方面的任何帮助表示赞赏。谢谢。
答案 0 :(得分:2)
您的问题中的代码是混合具有变量赋值语法的对象文字语法。此外,在该功能中,您应该将this
分配给self
/ that
变量以缓解范围问题。它还使得使用ko.computed()更好。
var profileMod = function() {
var self = this;
self.first = ko.observable("Bob");
self.last = ko.observable("Smith");
}
我已更新你的小提琴http://jsfiddle.net/nn0mfe48/3/
答案 1 :(得分:1)
正确创建视图模型后:
var profileModel = function() {
this.firstname = ko.observable("Bob");
this.lastname = ko.observable("Smith");
};
确保在绑定之前创建新实例:
var vm = new profileModel();
并绑定 :
ko.applyBindings(vm);
另外,请谨慎使用with
绑定。您已在shell
模型周围创建了一个上下文,强制您使用$root
访问profile
视图模型。