2
添加和删除jQueryUI的标签我得到暗示从this sample codes如何与knockout.js
附带这里
<button id='add'>add</button>
<div data-bind="template: 'tabsTmpl'"></div>
<script id="tabsTmpl" type="text/html">
<div data-bind="jqTabs: { fx: { } }">
<ul>
{{each tabs}}
<li>
<a href="#tab-${id}">${id}</a>
</li>
{{/each}}
</ul>
{{each tabs}}
<div id="tab-${id}" >${id}</div>
{{/each}}
</div>
</script>
<script>
ko.bindingHandlers.jqTabs = {
init: function (element, valueAccessor) {
var options = valueAccessor() || {};
$(element).tabs(options);
}
};
function TabItem(id) {
this.id = ko.observable(id);
}
var viewModel = {
tabs: ko.observableArray([new TabItem(1), new TabItem(2), new TabItem(3)])
};
$(function() {
ko.applyBindings(viewModel);
$('#add').click(function() {
viewModel.tabs.push(new TabItem(viewModel.tabs().length + 1));
});
});
</script>
代码的使用jQuery的模板引擎上面的代码的作者,但我想用淘汰赛.js'本地模板引擎,所以我改变了html代码如下:
<div>
<div data-bind="jqTabs: { fx: { } }">
<ul data-bind="foreach: tabs">
<li>
<a data-bind="attr:{href:'#tab-' + id()}, text:id"></a>
</li>
</ul>
<!-- ko foreach: tabs -->
<div data-bind="attr:{id:'tab-'+id()}, text:id"></div>
<!-- /ko -->
</div>
</div>
但是,它不起作用。 我在做什么本地模板引擎错误? 在此先感谢。
谢谢约翰,你可以看看这段代码http://jsfiddle.net/outia24/NLGm8/33/我添加了按钮来添加标签,但它没有按预期工作 – Ray
问题是,自定义绑定不是重新评估。通过添加依赖关系,我们可以解决这个问题。然后我们需要确保在初始化选项卡之前清除任何现有选项卡。我也切换到自定义绑定中的'更新'(因为我们想对变化做出反应)。这是最后的结果:http://jsfiddle.net/NLGm8/34/ –
这是完美的,约翰。顺便说一句,你可以详细说明为什么'如果:标签()。长度> 0'代码需要?我仍然不明白。 – Ray