我正试图绕过一个关于未使用变量的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的方法,但除非你实际使用该值,否则无法找到方法。我也没有真正看到一些方法来重写这个,因为有些订阅。
答案 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);