我處理相當大數量的JSON和數據是這樣的:大嵌套的JSON數據並更新DOM時改變
{
"name": "John Smith",
"age": 32,
"employed": true,
"address": {
"street": "701 First Ave.",
"city": "Sunnyvale, CA 95125",
"country": "United States"
},
"children": [
{
"name": "Richard",
"age": 7,
"field": {
"field": "value"
}
}
]
}
每當我改變什麼,我得到一個新的響應這有點類似以前的數據,但可能已添加新的屬性,可能已刪除的東西,等等。
我testcode是這樣(不介意這裏的不良行爲無限量):
<div data-viewmodel="whatevz">
<span data-bind="text: stuff['nested-thingy']"></span>
</div>
<script>
function vm() {
var self = this;
this.stuff = ko.observable();
require(["shop/app"], function (shop) {
setTimeout(function() {
self.stuff(shop.stuff);
}, 1200);
});
}
ko.applyBindings(new vm(), $("[data-viewmodel]")[0]);
</script>
我想要的東西[「嵌套啄」]每當東西被更新進行更新。我如何在沒有任何映射的情況下做到這一點,並讓所有事情都可觀察?
這似乎對矯枉過正給我。我不想在0.6 MB的JSON上擁有數百個數據綁定對象,每個頁面上都會更新10次或更多。我也擔心一遍又一遍數據綁定這麼多的數據會很慢。有人能在這裏詳細說明嗎? –
那麼,你可以使用忽略屬性來複制你關心的那部分頁面的數據。我認爲你的例子是過度簡化的,你想要綁定到嵌套對象中的不止一個屬性? –
是的,根據您正在瀏覽的頁面,可能會或可能不會使用JSON響應中的所有內容。有什麼方法可以告訴Knockout一個對象被更改,並且所有使用後代屬性或數組的對象都應該被更新? –