0
我想建立簡單的頁面,用戶可以從列表中選擇一張照片,並修改一些屬性,所以我不得不建立的模型:Knockout.js映射。如何只更新視圖模型的一部分?
model = {
newPhotos: [],
currentPhoto: {
id: 0,
description: ""
},
setCurrent: function (photo, e) {
ko.mapping.fromJS(ko.mapping.toJS(photo), viewModel.currentPhoto);
}
}
和標記:
<div class="content" data-bind="foreach: newPhotos">
<div class="photo" data-bind="click: $parent.setCurrent">
<div class="frame" data-bind="img: imageSrc">
</div>
</div>
</div>
<div class="edit-area" data-bind="with: currentPhoto">
<canvas id="image-edit" />
<textarea class="multi-line" name="PhotoDesc" data-bind="value: description"></textarea>
</div>
主要想法是,當用戶點擊照片,setCurrent
函數調用,那裏我可以更新currentPhoto
與查看模型,點擊綁定通過setCurrent
,,但有問題ko.mapping.fromJS(jsObj, viewModel)
(從我可以看到從源)e xpecting該viewModel將根模型。 我知道我可以手動檢查所有觀測值並刷新它們的值,或者取消映射rootModel,設置屬性然後更新根目錄,但我相信有更復雜和更優雅的方式來做到這一點。
謝謝。