cannot applybindings multiple times knockout in MVC partial view

≯℡__Kan透↙ 提交于 2019-12-13 03:44:43

问题


Hi have a parent page in which i have used knockout js to bind model with html element.

Now i make a ajax call to receive a partialviewresult which i place it in a div conbtainer.

All works fine if use the inbuilt mvc model binding.

But when i go for knockout in my partial view as well. I get the errorcannot applybindings multiple times knockout in MVC partial view.

I have even tried using

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

But still get the same error. Is it not possible to get the partial view result from the action method and use knockout in partial view ? I do not want hide the div in my parent page and get a JsonResult and bind it to my div element.


回答1:


If you have the following (general layout):

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

and you've already applied your bindings to #parent, you have to clean #partialTarget before applying the viewmodel again. #partialTarget has already been bound from the first pass, so to apply the bindings to the loaded contents, you need to do something like this:

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


来源:https://stackoverflow.com/questions/28765407/cannot-applybindings-multiple-times-knockout-in-mvc-partial-view

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!