Javascript 敲除计数器错误(ASP.NET MVC)
我已经通过击倒JS编写了脚本 这是查看代码Javascript 敲除计数器错误(ASP.NET MVC),javascript,asp.net-mvc,knockout.js,Javascript,Asp.net Mvc,Knockout.js,我已经通过击倒JS编写了脚本 这是查看代码 <span data-bind='text: numberOfClicks'> </span>/<span data-bind='text: totalnumberofClicks'> </span> 当numberOfClicks>=totalnumberofClicks时,我需要获得警报 但我有错误 Uncaught ReferenceError: numbe
<span data-bind='text: numberOfClicks'> </span>/<span data-bind='text: totalnumberofClicks'> </span>
当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)
未捕获引用错误:未定义numberOfClicks
单击CounterViewModel.registerClick(2141:169)
在HTMLButtoneElement。(淘汰赛-3.4.2.js:90)
在HTMLButtonElement.dispatch(jquery-3.1.1.js:5201)
位于HTMLButtonElement.elemData.handle(jquery-3.1.1.js:5009)
如何修复它?
此在注册表中单击仅是方法中的范围。通过将外部范围变量绑定到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!");
}
};
};
registerClick
中的this
并不总是引用您的viewmodel实例。将.bind(this)
添加到函数声明中,或者在我们的原型中定义它。您还可以使用data bind=“click:registerClick.bind($data)”
在您的单击中绑定它,这非常有帮助!
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!");
}
};
};