コンテナーレス構文を使用して Knockoutjs テンプレートを呼び出す場合、IE8 は foreach 制御フロー内のテンプレートを適切にレンダリングしません。初期化は正常に機能しitems
ますが、変更された場合、レンダリングは正しくありません。これは IE8 でのみ発生します。9 は問題ありません。7 でも動作します。
モデル
function BrowseModel() {
var self = this;
self.items = ko.observableArray();
self.itemsStep = ko.observable(1);
self.repopulate = function() {
self.itemsStep(self.itemsStep() + 3);
return false;
};
ko.computed(function() {
var arr = [];
for (var i = self.itemsStep(); i <= self.itemsStep() + 5; i++) {
arr.push(i);
}
self.items(arr);
}, self);
}
ko.applyBindings(new BrowseModel());
意見
<a href="javascript:;" data-bind="click: repopulate">Change items</a>
<ul>
<!-- ko foreach: items -->
<!-- ko template: { name: 'product_template'} -->
<!-- /ko -->
<!-- /ko -->
</ul>
<ul>
<li data-bind="template: { foreach: items, name: 'product_template' }"></li>
</ul>
<br />
<div data-bind="text: ko.toJSON($data)"></div>
<script type="text/html" id="product_template">
<li data-bind="text: $data"></li>
</script>
IE 8 の動作パターンが見つかりませんでした。レンダリングは一種のランダムです。
コンテナーレス制御フロー構文を使用しない以外に、これを修正するにはどうすればよいですか?
LE: 問題がある場合は、F12 開発者ツールを使用しています