Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/412.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 敲除计数器错误(ASP.NET MVC)_Javascript_Asp.net Mvc_Knockout.js - Fatal编程技术网

Javascript 敲除计数器错误(ASP.NET MVC)

Javascript 敲除计数器错误(ASP.NET MVC),javascript,asp.net-mvc,knockout.js,Javascript,Asp.net Mvc,Knockout.js,我已经通过击倒JS编写了脚本 这是查看代码 <span data-bind='text: numberOfClicks'>&nbsp;</span>/<span data-bind='text: totalnumberofClicks'>&nbsp;</span> 当numberOfClicks>=totalnumberofClicks时,我需要获得警报 但我有错误 Uncaught ReferenceError: numbe

我已经通过击倒JS编写了脚本

这是查看代码

 <span data-bind='text: numberOfClicks'>&nbsp;</span>/<span data-bind='text: totalnumberofClicks'>&nbsp;</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!");
        }
    };
};