您有一个父页面,其中我使用了敲除js将模型与html元素绑定。
现在我做一个ajax调用来接收一个partialviewresult,我将它放在div conbtainer中。
如果使用内置的mvc模型绑定,一切正常。
但是当我在局部视野中去淘汰时。我在MVC局部视图中多次敲除了错误无法应用绑定。
我甚至尝试过使用
ko.applybindings(new vm(),document.getelementbyId("div1"))
ko.applybindings(new vm1(),document.getelementbyId("div2"))
但仍然得到同样的错误。是否无法从动作方法获取局部视图结果并在局部视图中使用knockout?我不想在我的父页面中隐藏div并得到一个JsonResult并将其绑定到我的div元素。
答案 0 :(得分:1)
如果您有以下(一般布局):
<div id="parent">
content
<div id="partialTarget"></div>
</div>
并且您已经将绑定应用于#parent,您必须在再次应用viewmodel之前清除#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
});