我使用下面的模板:Knockout.js - 的foreach綁定 - 測試,如果最後一個元素
<div class="datatypeOptions" data-bind="if: $data.datatypeTemplate().allowOptions">
<h3>Allowed responses</h3>
<p data-bind="if: $data.datatypeTemplate().datatypeOptions().length == 0">There are no responses for this question, yet. <a href="#" data-bind="click: function(d, e){$root.addDatatypeOption($data.datatypeTemplate());}">Add one</a>
<ul data-bind="foreach: $data.datatypeTemplate().datatypeOptions()">
<li>
<a href="#" data-bind="text: name, click: $root.selectedDatatypeOption, visible: $data !== $root.selectedDatatypeOption()"></a>
<input data-bind="value: name, visibleAndSelect: $data === $root.selectedDatatypeOption(), event: { blur: $root.clearDatatypeOption }, executeOnEnter: { callback: function(){ $root.addDatatypeOption($parent.datatypeTemplate()); } }" />
//I want to show this a tag only if $data is the last element in the array.
Problem here ===> <a href="#" data-bind="if: $data == $parent.datatypeTemplate().datatypeOptions()[ $parent.datatypeTemplate().datatypeOptions().length - 1 ], click: function(d, e){$root.addDatatypeOption($data.datatypeTemplate());}"><img src='/static/img/icons/custom-task-wizard/black/plus_12x12.png' title='Add option'></a>
</li>
</ul>
</div>
我得到這個錯誤在控制檯:
Uncaught Error: Unable to parse bindings.
Message: TypeError: Object [object Object] has no method 'datatypeTemplate';
Bindings value: if: $data == $parent.datatypeTemplate().datatypeOptions()[ $parent.datatypeTemplate().datatypeOptions().length - 1 ], click: function(d, e){$root.addDatatypeOption($data.datatypeTemplate());}
是我加的唯一選擇函數給我的viewmodel,如果傳入的元素在數組中最後一個返回true/false?
http://memegenerator.net/instance/14211604 – Jonathan 2012-02-08 00:32:35
你可能想嘗試重現這的jsfiddle。我注意到的一件事是,你錯過了關閉你的'p'標記,這可能會導致綁定/上下文中的問題。您可以通過在視圖模型上放置一個計算的可觀察值或函數來保持視圖更清晰,以幫助確定最後一項。 – 2012-02-08 02:59:31