我有以下代码:
self.isViewingFolder = ko.observable();
self.isViewingSet = ko.observable();
self.canEditFolder = ko.observable();
self.isViewingFolder(ko.computed(function() {
return router.activeRoute().moduleId == 'viewmodels/folder';
}));
self.isViewingSet(ko.computed(function () {
return router.activeRoute().moduleId == 'viewmodels/set';
}));
self.canEditFolder(ko.computed(function() {
return self.isViewingFolder() && auth.isAuthenticated() && !self.isPublicFolder()
}));isViewingFolder和isViewingSet总是按预期更新,尽管canEditFolder只更新一次。如果我将canEditFolder设置为
canEditFolder(isViewingFolder())然后它就可以工作了,但是我需要里面的逻辑,所以我使用的是一个计算的可观测值。为什么这不起作用呢?
发布于 2013-06-01 04:45:45
发生的情况是,前两个函数中的可观测对象没有将它们的更新级联到更高的可观测对象。不带isViewingFolder()作为参数的canEditFolder评估它的初始值,然后它就不会收到更新,因此需要一个新的参数来告诉它更新它的值。
现在既然canEditFolder总是等于isViewingFolder,为什么你还需要这个额外的函数呢?
https://stackoverflow.com/questions/16865601
复制相似问题