2016-07-27 5 views
1

私のアプリケーションではModalを使用しています。これは、モーダルにコードの一部です:angular.js:11706 TypeError:kは関数ではありません

以下
<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) 
     } 

私はそれが正確にコンソールに結果を出力するボタンを1回クリックした場合、私は直面しています問題は、あります。私は、別のボタンをもう一度クリックをしようとした場合でも、その後、私は以下のエラーが出ます:

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>

答えて

1

ボタンをクリックしてください最初の時間は、それが機能を実行します。この関数の一部は$scope.score=scr;です。これは、関数であったものを、その引数として渡されたもののかわりに再割り当てします。 2回目にボタンをクリックすると、新しい値$scope.scoreが実行されますが、その新しい値は関数ではないため、表示されるエラーが発生します。

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) 
 
    } 
 
}
<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>

関連する問題