[英]Computed observable function in knockout
我的淘汰赛实施有问题。 我是淘汰赛的新手,将感谢您的帮助。
我有以下代码:
function updateViewModel() {
if (typeof groupId == 'undefined') {
groupId = getDefaultGroupId();
}
$.getJSON("api/livestatusgroup/children/" + groupId)
.done(function (data) {
ko.mapping.fromJS(data, liveStatusViewModel.groups);
groupsLoaded();
});
$.getJSON("api/livestatusgroup/resources/" + groupId)
.done(function(data) {
ko.mapping.fromJS(data, liveStatusViewModel.resources);
resourcesLoaded();
});
this.resourceImagePath = ko.computed(function () {
return "../Image/" + this.ResID;
}, this);
}
function ViewModel() {
var self = this;
self.resources = ko.mapping.fromJS([]);
self.groups = ko.mapping.fromJS([]);
}
var vm = new ViewModel();
ko.applyBindings(vm);
不幸的是,计算得出的可观察函数resourceImagePath无法正确捕获我的资源的ResID,因此最终出现了/ Image / undefined这样的URL。
我想念什么? 我已经检查了,ResID字段在视图模型中肯定存在。
小号
当您实现ko.computed
observable时,只会为在计算函数中引用的observables创建依赖项。 请记住,可观察对象必须通过执行它们来引用,因为它们是函数-正是此操作允许计算函数检测并跟踪依赖项。
否则,计算函数将只能使用首次执行计算函数时可用的值。
这段代码引用了this.ResID
,但由于没有将ResID视为可观察this.ResID
,因此对此没有任何依赖性。
this.resourceImagePath = ko.computed(function () {
return "../Image/" + this.ResID;
}, this);
尝试确保this.ResID
实际上是可观察的,并添加如下括号:
this.resourceImagePath = ko.computed(function () {
return "../Image/" + this.ResID();
}, this);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.