【问题标题】:cannot applybindings multiple times knockout in MVC partial view无法在 MVC 部分视图中多次应用绑定
【发布时间】:2015-04-30 04:26:24
【问题描述】:

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

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

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

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

我什至尝试过使用

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

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

【问题讨论】:

  • 如果您没有在某个函数或某处再次调用applybindings,那么您在此处给出的代码应该可以正常工作。与我们分享您的视图模型。欢呼

标签: asp.net-mvc knockout.js asp.net-mvc-partialview


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 2020-08-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-29
    • 2016-06-12
    • 1970-01-01
    • 2013-09-02
    相关资源
    最近更新 更多