有类似knockout.refresh绑定吗?
我正在尝试使用main.htm,myview.htm
main.htm有一个带有可观察的currentviewmodel的pageviewmodel。
main.htm中:
<div id="page">
<div data-bind="html:CurrentViewModel().Render"> </div>
</div>
带有脚本块
var appViewModel = function(){
var self = this;
self.CurrentViewModel = ko.observable({Render:function(){return '';}});
return self;
};
var myViewModel = function(){
var self = this;
self.Render = ko.observable('');
self.Name = ko.observable('blah');
self.Load = function(){
$.get('views/myview.htm', function(data) {
var res = data;
self.Render(res);
self.Name('blldjkfa');
},"html");
};
return self;
};
var pagemodel = new appViewModel(); ko.applyBindings(pagemodel,$( '#页')[0]);
myView.htm:
<div>
hello world <span data-bind="text:Name">a</span>
</div>
在某些时候,当前视图模型被设置
var loadedModel = new mainViewModel();
pagemodel.CurrentViewModel(loadedModel);
loadedModel.Load();
当调用load时,将填充站点的html但不应用data-bind。 但是,如果我将具有相同a的跨度放入块中,它会显示来自新视图模型的数据。
...让我相信我需要以某种方式刷新绑定......或者以不同的方式设置html?
答案 0 :(得分:0)
是的,您只需使用以下参数调用applyBindings
:
ko.applyBindings(yourModel, HTMLElement);
如果您正在使用jQuery,HTMLElement就像$('#yourElementId')[0]。 Knockout将以该元素开头的绑定应用为根。您可以在“激活淘汰赛”部分下阅读有关applyBindings
此处http://knockoutjs.com/documentation/observables.html的更多信息。祝你好运。