3
我希望我的瀏覽器能夠立即訪問,而無需等待加載模板。目前情況並非如此,當我提供一個大型數組(在這種情況下是1000個元素)。 我試過使用External Template Engine,但這只是導致模板顯示「正在加載...」,並且瀏覽器在加載完成之前沒有響應。瀏覽器在生成knockout.js模板時未響應
爲了說明,一個簡單的例子:
JS:
function User(firstname, lastname) {
this.firstname = ko.observable(firstname);
this.lastname = ko.observable(lastname);
}
function UserViewModel() {
this.allUsers = ko.observableArray([
new User("John", "Doe"),
new User("John", "Doe"),
new User("John", "Doe"),
// 1000 elements ...
new User("John", "Doe")
]);
}
ko.applyBindings(new UserViewModel());
HTML:
<html>
<head>
...
</head>
<body>
<ul data-bind="template: { name: 'my-template', foreach: allUsers() }"></ul>
<script type="text/html" id="my-template">
<li>
<h1 data-bind="text: firstname()"></h1>
<h2 data-bind="text: lastname()"></h2>
</li>
</script>
</body>
</html>
所以基本上我想什麼是可訪問時,模板被渲染的瀏覽器,一旦他們準備好了,他們應該可視化。我之前提到的外部模板引擎不符合我的需求。
謝謝。對於'常規'數據,這確實可行,但是當我使用自定義對象(例如主題帖子中的User對象)時,它仍然不能正常工作(可能是因爲附加了ko.observable()), 。 –
你確定,布拉姆?這似乎工作正常:http://jsfiddle.net/fdSUU/27/ –
是的,你是對的。我犯了將numToPush變量設置爲初始數組長度的錯誤,但在查看代碼之後,顯然這不是正確的做法。你認爲10是最好的選擇,還是我可以改變這個例如1? –