Knockoutjs の Javascript を生成する次の CoffeeScript があります。
class NewsItem
content: ko.observable("")
title: ko.observable("")
constructor: (data,dispForm) ->
@content data.get_item("content")
@title data.get_item("title")
@id = data.get_id()
class NewsItemViewModel
collection: ko.observableArray()
loadAll: =>
listEnumerator = items.getEnumerator()
while listEnumerator.moveNext()
currentItem = listEnumerator.get_current()
@collection.push new NewsItem currentItem, @list.get_defaultDisplayFormUrl()
return
$ ->
viewModel = new NewsItemViewModel
ko.applyBindings viewModel
return
HTML をレンダリングするには、このコードを使用します
<ul id="results" data-bind="template: {name: 'item_template', foreach: collection}">
</ul>
<script id="item_template" type="text/x-jquery-tmpl">
<li>
<h3><a href="/" data-bind="text: title"></a></h3>
<p>
<textarea data-bind="value: content"></textarea>
<input type="button" value="save" data-bind="enable: content().length > 0">
</p>
</li>
</script>
ただし、HTML では、すべての項目が、コレクションに最後に追加された NewsItem の値を表示します。
ヒントはありますか?