我在我的应用中使用模态。这是模态中的一段代码:
<div class="btn-group" ng-repeat='r in range' >
<button type="button" class="btn btn-default" style="width:40px"
ng-click="score(r);" >{{r}}</button>
</div>
以下是功能:
$scope.range=[0,1,2,3,4,5,6,7,8,9,10,11],
$scope.score=function(scr){
debugger
$scope.scored=true
$scope.score=scr;
console.log(scr)
}
我面临的问题是,如果我在按钮上单击一次,它会在控制台中准确打印结果。但之后,如果我再次尝试点击另一个按钮,那么我会收到以下错误:
angular.js:11706 TypeError: k is not a function
但是如果我关闭模态并且只有一次没有通过错误。我真的很困惑。是因为吊装问题吗?如果有人,请给我一个解决方案。
示例代码:
function TodoCtrl($scope) {
$scope.range = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11],
$scope.score = function(scr) {
$scope.scored = true
$scope.score = scr;
console.log(scr)
}
}
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<div ng-app>
<div ng-controller="TodoCtrl">
<div class="btn-group" ng-repeat='r in range'>
<button type="button" class="btn btn-default" style="width:40px" ng-click="score(r);">{{r}}</button>
</div>
</div>
</div>
答案 0 :(得分:1)
第一次单击按钮时,它会运行该功能。部分功能是这一行:$scope.score=scr;
。这将重新分配以前的函数,而不是作为参数传递给它的任何东西。第二次单击该按钮时,它会尝试运行新值$scope.score
,但该新值不是函数,因此它会显示您看到的错误。
答案 1 :(得分:1)
有问题的一行是:
$scope.score = scr;
你已经有一个名为得分的功能。 $ scope是在外部作用域中定义的上下文存储变量。您为$ scope.score而不是函数重新分配了一个值,这就产生了JS错误。
我已经评论过这一行。
function TodoCtrl($scope) {
$scope.range = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11],
$scope.score = function(scr) {
$scope.scored = true
//$scope.score = scr;
console.log(scr)
}
}
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<div ng-app>
<div ng-controller="TodoCtrl">
<div class="btn-group" ng-repeat='r in range'>
<button type="button" class="btn btn-default" style="width:40px" ng-click="score(r);">{{r}}</button>
</div>
</div>
</div>
&#13;