如何在计算中包含observable并绕过resharper警告?

时间:2016-06-30 15:01:17

标签: knockout.js resharper

我正试图绕过一个关于未使用变量的resharper警告。

这是我目前的职能:

self.contentDimensions = _i.ko.computed(function () {
    var fakeVarToFireComputed = self.contentSize() + self.ListLength();
    var firstEl = _i.$(itemSelector, self.viewRef()).first();
    if (firstEl.length > 0) {
        return { 
            width: firstEl.outerWidth(true), 
            height: firstEl.outerHeight(true) };
    } else {
        return self.contentDimensions();
    }
}, this, { deferEvaluation: true });

但由于未使用fakeVarToFireComputed,因此会发出警告。

以下是我的想法:

self.contentDimensions = _i.ko.computed(function () {
    var fakeVarToFireComputed = self.contentSize() + self.ListLength();
    var firstEl = _i.$(itemSelector, self.viewRef()).first();
    if (firstEl.length > 0) {
        return { 
            width: firstEl.outerWidth(true), 
            height: firstEl.outerHeight(true),
            fake: fakeVarToFireComputed
        };
    } else {
        return self.contentDimensions();
    }
}, this, { deferEvaluation: true });

这摆脱了警告,但还有更好的方法吗?

我试图在计算中搜索包含observable的方法,但除非你实际使用该值,否则无法找到方法。我也没有真正看到一些方法来重写这个,因为有些订阅。

1 个答案:

答案 0 :(得分:1)

你是对的,你需要调用所有可观察对象来让它们在计算中注册...但是,你不需要实际使用它们的值,只需执行可观察量。

在你的情况下,这样的事情可以解决问题并阻止resharper警告

self.contentDimensions = _i.ko.computed(function () {
    self.contentSize(); //Something like this will be enough
    self.ListLength(); 
    var firstEl = _i.$(itemSelector, self.viewRef()).first();
    if (firstEl.length > 0) {
        return { 
            width: firstEl.outerWidth(true), 
            height: firstEl.outerHeight(true),
            fake: fakeVarToFireComputed
        };
    } else {
        return self.contentDimensions();
    }
}, this, { deferEvaluation: true });

在一个工作项目中,我有动态依赖项,所以我预先注册它们,我的计算机看起来像这样

node.isValid = ko.pureComputed(function () {
            for (var i = 0; i < this.isValidDependencies().length; i++) {
                this.isValidDependencies()[i](); //Just call every dependency
            }
            //more code, validations bla bla bla
            },node);