我有通过 Knockout JS 编写的脚本。
这里是查看代码
<span data-bind='text: numberOfClicks'> </span>/<span data-bind='text: totalnumberofClicks'> </span>
这是代码
function count_blocks() {
var length = $("#questions > div").length;
var ClickCounterViewModel = function () {
this.totalnumberofClicks = ko.observable(length);
this.numberOfClicks = ko.observable(1);
this.registerClick = function () {
this.numberOfClicks(this.numberOfClicks() + 1);
if (numberOfClicks >= totalnumberofClicks ) {
alert("error!");
}
};
};
ko.applyBindings(new ClickCounterViewModel());
}
当 numberOfClicks >=totalnumberofClicks 时,我需要收到警报。
但是我有错误
Uncaught ReferenceError: numberOfClicks is not defined
at ClickCounterViewModel.registerClick (2141:169)
at HTMLButtonElement.<anonymous> (knockout-3.4.2.js:90)
at HTMLButtonElement.dispatch (jquery-3.1.1.js:5201)
at HTMLButtonElement.elemData.handle (jquery-3.1.1.js:5009)
我该如何解决这个问题?
最佳答案
this
registerClick
内仅是方法内的范围。通过将外部作用域变量绑定(bind)到 self
来访问外部作用域变量并将其用作:
var ClickCounterViewModel = function () {
var self = this;
this.totalnumberofClicks = ko.observable(length);
this.numberOfClicks = ko.observable(1);
this.registerClick = function () {
self.numberOfClicks(self.numberOfClicks() + 1);
if (self.numberOfClicks() >= self.totalnumberofClicks()) {
alert("error!");
}
};
};
关于javascript - knockout 计数器错误 (ASP.NET MVC),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43611131/