0

我有以下代码:

    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())

然后它就可以工作了,但是我需要那里的逻辑,所以我使用了一个计算的 observable。为什么这不起作用?

4

1 回答 1

0

发生的事情是,前 2 个函数中的 observables 没有将它们的更新级联到更高的 observables。没有 isViewingFolder() 作为参数的 canEditFolder 评估它的初始值,然后它稍后不会收到更新,因此需要一个新参数来告诉它更新它的值。

现在既然 canEditFolder 总是等于 isViewingFolder 为什么你需要额外的功能?

于 2013-05-31T20:45:44.633 回答