开源改变世界

敲除:“未捕获的错误:您不能将绑定多次应用于同一元素。” #9

推推 grbl 2年前 (2023-02-03) 149次浏览
关闭
emteeoh 打开了这个问题 2016 年 9 月 15 日 · 2 条评论
关闭

敲除:“未捕获的错误:您不能将绑定多次应用于同一元素。”#9

emteeoh 打开了这个问题 2016 年 9 月 15 日 · 2 条评论

评论

敲除:“未捕获的错误:您不能将绑定多次应用于同一元素。” #9
合作者

当我调用 knockout 的 ko.applyBindings() 时,我收到此错误:未捕获错误:您不能将绑定多次应用于同一元素。

我认为这意味着我们需要重新考虑如何使用 knockout,假设我对 KO 的理解是正确的,否则我们将只能在 com 模块中使用它,别无他处。

我的淘汰赛代码:
function materialType(mtName) {
this.materialName = mtName;
};

    function materialViewModel(){
            this.materialList = ko.observableArray([new materialType("")]);

            this.addMaterial = function() {
                    this.materialList.push(new materialType(""));
            };
    };

[…]
bind_model: function() {
ko.applyBindings(new materialViewModel() );
},

敲除:“未捕获的错误:您不能将绑定多次应用于同一元素。” #9 emteeoh 添加了 漏洞 标签 2016 年 9 月 15 日
敲除:“未捕获的错误:您不能将绑定多次应用于同一元素。” #9
合作者作者

来自 KO 文档:

或者,您可以传递第二个参数来定义要搜索数据绑定属性的文档部分。例如,ko.applyBindings(myViewModel, document.getElementById(‘someElementId’))。这将激活限制为 ID 为 someElementId 的元素及其后代,这在您想要拥有多个视图模型并将每个视图模型与页面的不同区域相关联时非常有用。

我认为我们要么必须让所有模块共享一个视图模型,要么我们需要限制每个绑定到一个元素。后者听起来更接近 com 目前的写法……

敲除:“未捕获的错误:您不能将绑定多次应用于同一元素。” #9
合作者作者

没关系。再看一遍,com 正确调用了 applyBindings,只是我没有调用。呸!