0
我有一個標準的AJAX調用,我在這裏呼籲:在AJAX調用之後knockout沒有更新observable?
dataservice.createCard(card, function(serverData) {
var newCard = new cardViewModel(serverData);
// I see the right cardId here - from the server
var index = innerModel.cards().indexOf(card);
if (index !== -1) {
// this gets hit but the DOM doesn't change
innerModel.cards()[index] = newCard;
}
}
在我看來,我有這樣的:
<!-- ko foreach: data().cards -->
<p data-bind="text: cardId"></p>
<!-- /ko -->
現在,當我點擊「添加卡」,我插入一個空白cardViewModel進入卡片清單。當用戶點擊保存,我回發到服務器,當服務器響應異步調用時,在回調中,我嘗試用真實數據替換舊的「模板」。
問題是 - 真正的數據永遠不會更新,除非我刷新頁面。如果我將初始cardId設置爲某個字符串,那麼在我得到真實數據之後,該字符串將保留,此時它應該變成一個Id。
我錯過了什麼?
我innerModel映射:
var mapping = {
create: function (options) {
//customize at the root level.
var innerModel = ko.mapping.fromJS(options.data, {
'cards': {
create: function (options) {
var card = new cardViewModel(options.data);
return card;
}
}
});
}
如果有什麼我需要在這裏包括,讓我知道。