我有一个可观察的:
List<Class> myTypes = new ArrayList<>();
Reflections reflections = new Reflections("com.package");
for (String s : reflections.getStore().get(SubTypesScanner.class).values()) {
myTypes.add(Class.forName(s));
}
我想为它添加另一个可观察的属性:
user.profile = {
name: ko.observable();
}
然后,当我_.extend(user.profile,{email:ko.observable('email@foo.com')});
时,它只显示name属性。
答案 0 :(得分:1)
如果user.profile.email
是可观察的,则您的上述作业具有误导性。这将是
_.extend(user.profile(), {email:ko.observable('email@foo.com')});
如果是这种情况,那么lodash没有按预期扩展它是有意义的。它会将一个成员添加到observable中,而不是添加到observable的内容中。你会user.profile().email = ko.observable('email@foo.com');
。您可以尝试
arena=350M
虽然我不确定这会为你买什么
fordblks=290M
答案 1 :(得分:1)
看,也许你没有看到修改因为你正在使用js对象而不是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@foo.com')}));
};
ko.applyBindings( new viewModel());
&#13;
<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>
&#13;