我有一個觀察的:lodash延長不延長淘汰賽觀察到
user.profile = {
name: ko.observable();
}
我想另一個觀察的屬性添加到它:
_.extend(user.profile,{email:ko.observable('[email protected]')});
然後當我做user.profile()
只顯示名稱屬性。
我有一個觀察的:lodash延長不延長淘汰賽觀察到
user.profile = {
name: ko.observable();
}
我想另一個觀察的屬性添加到它:
_.extend(user.profile,{email:ko.observable('[email protected]')});
然後當我做user.profile()
只顯示名稱屬性。
看,也許你沒有看到修改becouse您正在使用JS對象的工作,你可能會試圖
_.extend(user.profile(), {email:ko.observable('[email protected]')});
得到你想要的結果而不是ko.observable
,所以如果你在代碼片段中看到它的工作正常。
function viewModel(){
var user= {}
user.profile = {
name:ko.observable("teste")
};
this.profile = ko.observable(user.profile);
};
viewModel.prototype.extend= function(){
this.profile(_.extend(this.profile(),{email:ko.observable('[email protected]')}));
};
ko.applyBindings(new viewModel());
<script src="https://cdnjs.cloudflare.com/ajax/libs/knockout/3.2.0/knockout-min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/underscore.js/1.8.3/underscore-min.js"></script>
<span data-bind="text:ko.toJSON(profile)"></span>
<button data-bind="click: extend">Extend</button>
如果user.profile
是可觀察到的,你的任務上面是一種誤導。這將是
user.profile({name: ko.observable()});
如果是這樣的話,這是有道理的,lodash不會按預期擴展它。它將增加一個成員給觀察者,而不是觀察者的內容。你將有user.profile.email
。雖然我不知道這是什麼給你買了只
user.profile().email = ko.observable('[email protected]');
'user.profile()'不會,因爲在所有'user.profile'不是一個函數或可觀察工作。 – Retsam