我的基类中的observable有问题。 看看this小提琴,看看问题。
我将解释我想要做的事情。
我为我继承的viewmodel提供了一个基类。 该基类包含可观察的属性。
我创建了我的继承类的多个实例并为observables赋值,然后为所有实例注册的值是最后一个赋值的值。
以下代码解释了我的意思。
var vm = function () {
var test = ko.observable();
return {
test: test
}
};
var subvm = function () {
};
subvm.prototype = new vm();
subvm.prototype.constructor = subvm;
subvm.prototype.parent = vm.prototype;
var testvm1 = new subvm();
var testvm2 = new subvm();
ko.applyBindings(testvm1, $('#div1').get(0));
ko.applyBindings(testvm2, $('#div2').get(0));
testvm1.test('Value for object 1');
testvm2.test('Value for object 2');
创建的视图模型绑定到以下html:
<div id="div1">
<span data-bind="text: test">test1</span>
</div>
<div id="div2">
<span data-bind="text: test">test2</span>
</div>
我做错了什么是淘汰不支持。
我会对此提出任何帮助。
答案 0 :(得分:0)
你的继承模型是错误的。 subvm
的两个实例共享test
的相同实例。
原型继承不能创建在父“class”中看到的词法范围变量的唯一实例,除非您确保每次实例化子类对象时实际调用超类构造函数。