最初は空のobservableArrayにバインドされた単純なコレクションがあります。ページがレンダリングされると、バインディングが開始されて要素が削除される前に、「時々」は空のテンプレートが表示されます。表示されない場合は、ページを数回更新してください。 これは、コンテナレステンプレートでは以下のように発生しますが、通常のインラインおよびスクリプトタグスタイルのテンプレートでも発生します。
意見:
<div>
<input data-bind="value: address"/>
<button data-bind="click: search">Search</button>
</div>
<!-- ko if: list().length > 0 -->
<h5 data-bind="text: list().length"></h5>
<!-- /ko -->
<!-- ko foreach: list -->
<div class="result" data-bind="text: addr"></div>
<!-- /ko -->
Javascript:
$(function() {
var viewModel = function() {
var self = this;
self.address = ko.observable("Portland");
self.list = ko.observableArray();
self.hasData = function(){return self.list().length > 0;};
self.search = function() {
self.list.push({ addr: "Item01" , index: 1 });
self.list.push({ addr: "Item02" , index: 2 });
self.list.push({ addr: "Item03" , index: 3 });
};
};
var vm = new viewModel();
ko.applyBindings(vm);
});
jsFiddle(http://jsfiddle.net/motowilliams/mx7SM/またはJSBin )ではあまり発生しないようですが、ローカルで展開すると発生します-http://knockouttest.herokuapp.com/ 。
何か案は?