Tôi đã sau CoffeeScript để tạo Javascript cho KnockoutjsCoffeeScript, Knockout & thể quan sát được
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
Để render HTML tôi sử dụng mã này
<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>
Tuy nhiên, trong HTML tất cả các mục hiển thị các giá trị của NewsItem cuối cùng được thêm vào bộ sưu tập.
Bất kỳ gợi ý?
Tôi nghĩ rằng đây luôn là cách nó nên được thực hiện. – Tyrsius
@Tyrsius Điều đó phụ thuộc - nếu bạn muốn một thành viên lớp học riêng cho từng trường hợp cụ thể (tôi phải đồng ý, bạn sẽ muốn hầu hết thời gian), sau đó có. Bạn chỉ cần biết sự khác biệt. – Niko
Tôi cho rằng sẽ có lần bạn muốn một thuộc tính tĩnh, nhưng đây phải là ngoại lệ, không phải là quy tắc. – Tyrsius