javascript-无法获取Knockout.js更新可观察对象的属性
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了javascript-无法获取Knockout.js更新可观察对象的属性,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1339字,纯文字阅读大概需要2分钟。
内容图文
![javascript-无法获取Knockout.js更新可观察对象的属性](/upload/InfoBanner/zyjiaocheng/662/1c4ab08e299c455fb6b87004f34d0919.jpg)
我有一个具有公共属性的对象:
function MyClass() {
var self = this;
self.test = 'foo';
self.changeTest = function() {self.test = 'bar';}
}
var myobj = new MyClass();
可以通过某些对象方法以及从“外部”访问该属性.现在,如果我创建并绑定这样的视图模型:
function AppVMClass() {
var self = this;
self.obs_obj = ko.observable(myobj);
}
var vmodel = new AppVMClass();
ko.applyBindings(vmodel);
然后调用myobj.changeTest()不会更改observable的值.
即如果我在HTML页面中有类似的内容:
< div data-binding =“ text:obs_obj().test”>< / div>即使在调用myobj.changeTest()而不是更新之后,它也会显示“ foo”.
我究竟做错了什么?
解决方法:
ko.observable无法知道修改myobj的时间-您必须“告诉”它.通常,这是通过在修改属性时直接使用可观察对象来完成的.这实际上仅对值有意义(例如self.test),但是您试图使整个对象成为可观察对象.
取而代之的是,将您关心的值分解为它们自己的可观察对象,无论是在ViewModel上还是在单独的对象上(如果您确实关心分离的话):
function MyClass() {
var self = this;
// Notice that we're creating an observable directly,
// and setting its value in the changeTest method.
self.test = ko.observable('foo');
self.changeTest = function() {self.test('bar');}
}
var myobj = new MyClass();
function AppVMClass() {
var self = this;
self.obs_obj = myobj;
}
并更改模板(请注意,不要执行obs_obj.test(),因为那样只会返回值-您想绑定到可观察对象本身):
<div data-bind="text: obs_obj.test"></div>
内容总结
以上是互联网集市为您收集整理的javascript-无法获取Knockout.js更新可观察对象的属性全部内容,希望文章能够帮你解决javascript-无法获取Knockout.js更新可观察对象的属性所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。