我有一個嵌套屬性的複雜對象,它從null切換爲實際填充的對象。我可以通過ko.mapping.fromJSON首次映射一切。但是,當一個事件導致隨後的映射發生在那裏的屬性成爲空,別人得到的值映射發瘋:Knockout ko.mapping.fromJSON不更新
當「更新!」按鈕被點擊時,警報('1')被觸發並顯示「Test2」。但是,請點擊「更新!」再次提醒('2'),但文字不會改變。有任何想法嗎?
HTML:
<p> <span>Name:</span>
<span data-bind="text: IntroData ? IntroData.Name : TempData.Name"></span>
<button id="update" data-bind="click: Update">Update!</button>
</p>
的javascript:
var ViewModel = function (data) {
var me = this;
ko.mapping.fromJS(data, {}, me);
me.Update = function() {
if (me.Index() == '0' || me.Index() == '2') {
alert('1');
ko.mapping.fromJS(stuff2, {}, me);
} else {
alert('2');
ko.mapping.fromJS(stuff3, {}, me);
}
};
return me;
};
var stuff = {
Index: '0',
IntroData: {
Name: 'Test'
},
TempData: null
};
var stuff2 = {
Index: '1',
IntroData: {
Name: 'Test2'
},
TempData: {
Name: 'Temp2'
}
};
var stuff3 = {
Index: '2',
IntroData: null,
TempData: {
Name: 'Temp3'
}
};
window.viewModel = ko.mapping.fromJS(new ViewModel(stuff));
ko.applyBindings(window.viewModel);