KnockoutJS在第二次绑定后复制UI中的数据
KnockoutJS duplicates data in UI after second bind
多次点击按钮会导致UI中的数据重复。
我对每次点击的期望:* Name1 * Name2
But: * Name1 * Name1 * Name2 * Name2
<html>
<head>
<script src="http://knockoutjs.com/downloads/knockout-3.3.0.js" type="text/javascript"></script>
</head>
<body>
<div id="myDiv">
<div data-bind="foreach: Data">
* <span data-bind="text: Name"></span>
</div>
</div>
<button onclick="f1()">Click Me!</button>
<script type="text/javascript">
function myViewModel(data){
var self = this;
self.Data = data;
}
function f1() {
var d = [{ "Name": "Name1" }, { "Name": "Name2" }];
ko.cleanNode(document.getElementById('myDiv'));
ko.applyBindings(new myViewModel(d), document.getElementById('myDiv'));
return false;
}
</script>
</body>
</html>
您应该只调用ko。applyBindings一次,清理并重新应用并不是最佳实践。试试这样做:
<html>
<head>
<script src="http://knockoutjs.com/downloads/knockout-3.3.0.js" type="text/javascript"></script>
</head>
<body>
<div id="myDiv">
<div data-bind="foreach: Data">
* <span data-bind="text: Name"></span>
</div>
</div>
<button data-bind="click: f1">Click Me!</button>
<script type="text/javascript">
// viewmodel definition with click handler
function myViewModel(data){
var self = this;
self.Data = ko.observableArray(data);
self.f1 = function() {
self.Data([{ "Name": "Name1" }, { "Name": "Name2" }]);
}
}
// create instance of viewmodel on document ready, apply bindings
$(function(){
var vm = new myViewModel();
ko.applyBindings(vm, document.getElementById('myDiv'));
});
</script>
</body>
</html>
相关文章:
- 如何在具有某些 UI 视图的状态中管理工厂单个请求数据
- 如何在UI自动化中捕获响应数据
- 语义UI下拉选项数据属性
- 如何在状态输入ui路由器时立即显示模板,然后当承诺被解决时显示数据
- 视窗 8/Metro UI 数据绑定 JavaScript
- AngularJS和UI-选择多个数据
- UI网格单一筛选器无法处理复杂数据
- jQuery UI中的动态url,数据表
- 如何从$http请求延续中获得显示在angular ui.grid中的数据
- AngularJs的Kendo UI:当用户在网格中选择行时,如何在文本框字段上绑定数据
- 隐藏空模板,直到使用Restangular和UI Router加载数据
- 带有两个句柄的 jQuery UI 滑块 - 获取初始数据
- 如何使用Angular UI Router解析所有状态的数据
- 从动态数据生成AngularJS UI模板
- Kendo UI,将饼图绑定到分层远程数据
- 为什么分页数据表JQuery没有'不要使用JSF ui:重复
- 如何更改 jquery UI 数据选择器的样式 (CSS)
- 剑道 UI 数据模板 - 如何创建主容器并将模板加载到其中
- 如何在不需要刷新的情况下将Kendo UI数据向导集成到页面上
- 正在Jquery UI数据选择器上设置日期格式