【发布时间】:2016-11-23 03:32:44
【问题描述】:
相关,但没有解决问题:KnockoutJS: Using 'html' binding, new elements not binding
如果您有一个元素上的html 绑定,并在剔除和/或剔除视图模型之外更改此html 绑定的内部html,您将无法再控制更改原始html 绑定。请看下面的sn-p
我对保留更改内容的方法(运行原始 javascript/jquery)更感兴趣,并且更愿意理解/修复为什么调用 setdefault() 不会更新绑定
任何文档或链接也会有所帮助
$(document).ready(function(){
var VIEWMODEL = function(){
var _ = this;
_.content = ko.observable("<div>content</div>")
_.asyncoperation = function(){
$("#target")[0].innerHTML = "<div>async operation content</div>";
}
_.setdefault = function(){
_.content("<div>content</div>");
}
};
var vm = new VIEWMODEL();
ko.applyBindings(vm, $("#container")[0]);
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/knockout/3.2.0/knockout-min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="container">
<div id="target" data-bind="html: content"></div>
<br/>
<br/>
<button data-bind="click: asyncoperation">async operation to replace text</button>
<button data-bind="click: setdefault">set to default</button>
</div>
【问题讨论】:
-
我找不到任何文档/链接来解释为什么会出现这种情况,但这通常是使用淘汰赛的不明智的方法。为什么要在不使用淘汰赛的情况下更新内容?
-
由于 AB 测试,我只能更改此内容。这两个系统是分开的,我需要根据 A 或 B 更改 html。我宁愿不在窗口上创建我的视图模型来更改
ko.observable那样
标签: javascript jquery html knockout.js