javascript - 可通过继承观察 knockout

标签 javascript knockout.js knockout-2.0 prototypal-inheritance

我的基类中的可观察量有问题。 查看this拨弄一下看看问题。

我会解释我想要做什么。

我有一个我继承的 View 模型的基类。 该基类包含可观察的属性。

我创建了继承类的多个实例,并将值分配给可观察量,然后为所有实例注册的值是最后一次分配的值。

下面的代码解释了我的意思。

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');

​ 创建的 View 模型绑定(bind)到以下 html:

<div id="div1">
    <span data-bind="text: test">test1</span>
</div>
<div id="div2">
    <span data-bind="text: test">test2</span>
</div>

我做错了什么吗? knockout 不支持这一点。

我会感谢任何有关此问题的帮助。

最佳答案

您的继承模型是错误的。 subvm 的两个实例共享同一个 test 实例。

原型(prototype)继承不能创建在父“类”中看到的词法作用域变量的唯一实例,除非您确保每次实例化子类对象时都实际调用父类(super class)构造函数。

关于javascript - 可通过继承观察 knockout ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13178238/

相关文章:

knockout.js - knockout validation 教程

javascript - 为什么这三行代码会导致 Javascript "class"的定义?

javascript - 使用 Axios 捕获并处理连接拒绝错误

javascript - 从 knockoutjs 模型更改可观察值

javascript - Knockout-foreach 嵌套数组-不起作用

javascript - 使用剔除可观察数组填充下拉列表

javascript - 中间固定位置div

javascript - JavaScript 中的函数表达式与声明有什么区别?

javascript - knockout 检查值

javascript - 从对象循环键动态传递属性引用