Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/438.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript knockout.js:嵌套是否会导致重新订阅?_Javascript_Knockout.js - Fatal编程技术网

Javascript knockout.js:嵌套是否会导致重新订阅?

Javascript knockout.js:嵌套是否会导致重新订阅?,javascript,knockout.js,Javascript,Knockout.js,比如说,我们有: var model = { parent: ko.obervable({ child: ko.observable('') }) }; 当我们调用model.parentnewParentValue时,嵌套的子对象将替换为新的子对象。这是否会导致孩子的绑定将从被替换的孩子处取消订阅并订阅新的孩子?我不确定该如何回答您的问题。对于大多数意图和目的,答案都是肯定的,即:视图将递归地反映更改。您可以使用以下代码签入此项: 儿童目前: 用新的子项设置新

比如说,我们有:

var model = {
    parent: ko.obervable({
        child: ko.observable('')
    })
};

当我们调用model.parentnewParentValue时,嵌套的子对象将替换为新的子对象。这是否会导致孩子的绑定将从被替换的孩子处取消订阅并订阅新的孩子?

我不确定该如何回答您的问题。对于大多数意图和目的,答案都是肯定的,即:视图将递归地反映更改。您可以使用以下代码签入此项:

儿童目前: 用新的子项设置新的父项 使用以下JS:

var model = {
    parent: ko.observable({
        child: ko.observable((new Date()).toTimeString())
    })
};

model.setNewParent = function() {
    model.parent({
        child: ko.observable((new Date()).toTimeString())
    });
};

ko.applyBindings(model);
如果按下按钮,将设置一个新的父对象,您将注意到视图也在更新子对象


如果我把你的问题理解得更直白一点,可能会有一些细节。例如,我不知道DOM元素到底发生了什么。我想新的孩子会被创造出来,旧的可能会被丢弃。在任何情况下,对于这些详细的文字问题,我建议直接看一下

是的,我们都可以直观地看到新的模型节点和创建的新绑定。我怀疑的主要问题是老问题。所以,是的,我的意思是字面上的问题,特别是,我非常感兴趣的猜测旧绑定在最初的问题中被完全清除了。你测试过你的怀疑吗?正如我提到的,另一个选择是查看源代码,我想浏览一下,不过如果你想得到更精确的答案,你的问题就必须更精确。