如何在计算中包含可观察量并绕过 resharper 警告?

How to include observables in computed and get around resharper warning?

我正在尝试解决有关未使用变量的 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 来让它们在计算中注册...但是,你不需要实际使用它们的值,只需 execute可观察量。

在你的情况下,像这样的事情可以解决问题并防止 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);