我有三个可观察对象,如下所述:
self.firstName = ko.observable();
self.lastName = ko.observable();
self.middleName = ko.observable();
而且我的computed observable
如下所示:
ko.computed(function() {
var myMiddleName = self.middleName();
var Id = self.generateId(self.firstName.peek(), self.lastName.peek());
/* Other Operation */
});
正如您在上面的代码中看到的,当middleName
的值发生变化时,我正在调用计算函数。所以我将它分配给名为myMiddleName
的临时变量,它实际上并没有在任何地方使用。只是为了调用。
到目前为止一切正常。但是当我运行grunt lint
命令时,它会给我一个错误
' myMiddleName'被赋值但从未使用过。 (无未使用-VARS)
那我怎么能摆脱这个错误呢?
更新 - 1
删除变量myMiddleName
后,如图所示,警告不会出现。这是正确的方法吗?
ko.computed(function() {
self.middleName();
var Id = self.generateId(self.firstName.peek(), self.lastName.peek());
/* Other Operation */
});
答案 0 :(得分:2)
如评论中@ user3297291所述,解决此问题的正确方法是使用订阅者。如果使用计算,则计算将在可观察的更改时重新计算。如果您只希望在1次可观察的更改时发生这种情况,那么订阅者就可以了。
我猜你的用例远非你的例子,可能有关你的情况的更多细节可以解释这比现有代码更好。
function ViewModel() {
self.firstName = ko.observable();
self.lastName = ko.observable();
self.middleName = ko.observable();
self.generatedId = ko.observable();
self.middleName.subscribe(function(newValue) {
self.generatedId(self.firstName() + " " + self.lastName());
console.log(self.generatedId())
});
}
ko.applyBindings(new ViewModel())

<script src="https://cdnjs.cloudflare.com/ajax/libs/knockout/3.4.2/knockout-min.js"></script>
FirstName: <input data-bind="value: firstName" /> <br> MiddleName:
<input data-bind="value: middleName" /> <br> LastName: <input data-bind="value: lastName" /><br>
&#13;