无法在 MVC 局部视图中多次应用绑定

cannot applybindings multiple times knockout in MVC partial view

您好,我有一个父页面,我在其中使用 knockout js 将模型与 html 元素绑定。

现在我进行 ajax 调用以接收部分视图结果,我将其放置在 div conbtainer 中。

如果使用内置的 mvc 模型绑定,一切正常。

但是当我在我的部分观点中也去淘汰赛时。我在 MVC 局部视图中收到无法应用绑定多次敲除的错误。

我什至尝试过使用

ko.applybindings(new vm(),document.getelementbyId("div1"))
ko.applybindings(new vm1(),document.getelementbyId("div2"))

但是还是报同样的错误。是否无法从操作方法中获取局部视图结果并在局部视图中使用敲除?我不想在父页面中隐藏 div 并获取 JsonResult 并将其绑定到我的 div 元素。

如果你有以下(总体布局):

<div id="parent">
  content
  <div id="partialTarget"></div>
</div>

并且您已经将绑定应用到#parent,您必须在再次应用视图模型之前清除#partialTarget。 #partialTarget 已经从第一遍绑定,所以要将绑定应用到加载的内容,你需要做这样的事情:

var reapplyBindings = function(element){
    var vm = ko.dataFor(element);
    if( vm ) {
        ko.cleanNode(element);
        ko.applyBindings(vm, element);
    }
};

element.load(‘path/to/fragment.html’, function() {
    //the [0] selector is needed to be sure we have an actual dom element, not the jQuery wrapper
    reapplyBindings(element[0]); 
    //do whatever you’re already doing
});