模板内的Knockout绑定不起作用

时间:2013-06-28 08:45:43

标签: knockout.js jquery-templates

我正在使用 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/

3 个答案:

答案 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>

我希望它有所帮助。

See fiddle

答案 1 :(得分:2)

问题在于错误地将数据对象传递给模板。

以下是它的样子:

<div data-bind="template: { name: 'field-string', data: { field: $data, index: $index } }">
</div>

(字段:$ data - 带美元符号)

答案 2 :(得分:0)

这一切都取决于你何时调用ko.applyBindings。如果它是在生成模板之前,那么knockout对模板中的绑定没有任何作用。你能提供更多的代码或小提琴吗?