【发布时间】:2011-07-16 23:15:39
【问题描述】:
模板是否可以检查它被绑定到的元素的属性,然后决定它是否应该实际绑定到它?
我的想法是我将拥有多个divs,并且模板将绑定到每个div n 次,具体取决于 div 的 id 和数据中的 id。
<div id="col1" class="col" data-bind="template: 'widgetsTemplate'">
</div>
<div id="col2" class="col" data-bind="template: 'widgetsTemplate'">
</div>
@*<div data-bind="template: 'widgetsTemplate'" />*@
<script id="widgetsTemplate" type="text/x-jquery-tmpl">
<div>
{{each(index,widget) widgets}}
{{if widget.col == cols[index].id}}
<div>${widget.name}</div>
{{/if}}
{{/each}}
</div>
</script>
对应的JS:
var cols = $('.col');
function widget(name, col) {
return {
name: ko.observable(name),
col: ko.observable(col)
};
}
var viewModel = {
widgets: ko.observableArray(
[new widget("Widget 1", col1),
new widget("Widget 2", col2)])
};
ko.applyBindings(viewModel);
这是我的想法,但我似乎无法取得进展。
任何想法都将不胜感激。
【问题讨论】:
-
您想要 1 个包含小部件的列表,并让模板确定他们需要使用哪些小部件?例如,您不能将字符串数组绑定到您的模板。然后每个字符串代表一个小部件名称,并且为每个字符串呈现一个 div。然后让 jquery 查找具有“小部件”属性的 div(例如)并将适当的小部件绑定到它(假设这些小部件是 jquery 插件)。没有将其发布为答案,因为我有点不确定问题是什么。因为模板只会绑定到一个元素如果有一个 data-bind:"template" 属性
标签: jquery templates knockout.js