我正在使用 Knockout 和 jQuery tmpl 。绑定到“field-string”模板中的数据不起作用。
<div data-bind="template: { name: 'userField', foreach: userFields }"></div>
<script type="text/html" id="userFilter">
<div data-bind="template: { name: 'field-string', data: { field: data, index: $index } }">
</div>
</script>
<script type="text/html" id="field-string">
<input type="hidden" value="fld.${$data.index}" />
<input type="text" data-bind="value: field.data" />
</script>
userFields - viewViewModel中的observableArray,包含这样的对象:
{
data: ko.observable("")
fieldName: "Blah-blah"
}
请帮忙。谢谢!
更新:这是小提琴(不知道如何添加更多的libs :(。我还需要jquery.tmpl和jquery)http://jsfiddle.net/WBvpp/
答案 0 :(得分:2)
这就是你要找的东西:
<div data-bind="template: { name: 'userField', foreach: userFields }"></div>
<script type="text/html" id="userField">
<div data-bind="template: { name: 'field-string', data: {userData: $data, index: $index } }">
</div>
</script>
<script type="text/html" id="field-string">
<input type="text" data-bind="value : $data.index" />
<span data-bind="text: $data.userData.field" ></span>
<input type="text" data-bind="value :$data.userData.data" />
</script>
我希望它有所帮助。
答案 1 :(得分:2)
问题在于错误地将数据对象传递给模板。
以下是它的样子:
<div data-bind="template: { name: 'field-string', data: { field: $data, index: $index } }">
</div>
(字段:$ data - 带美元符号)
答案 2 :(得分:0)
这一切都取决于你何时调用ko.applyBindings。如果它是在生成模板之前,那么knockout对模板中的绑定没有任何作用。你能提供更多的代码或小提琴吗?