私は AngularJS を初めて使用し、コントローラーの関数に変数を渡す際に問題が発生しました。私のHTMLページのコードは次のとおりです。
<li ng-repeat="grade in grades">
<span class="status-{{grade.status()}}" ng-hide="visible" focus="visible = true" blur="visible = false" ng-click="visible = true">{{grade.name}},</span>
<span class="status-{{grade.status()}}" ng-hide="visible" focus="visible = true" blur="visible = false" ng-click="visible = true">{{grade.score}}</span>
<form ng-model="studentUpdForm" ng-submit="update({{grade.name}}, {{studentNameNew}}, {{grade.score}}, {{studentGradeNew}})" focus="visible = true" blur="visible = false" ng-show="visible">
<input type="text" ng-model="studentNameNew" size="12" class="status-{{grade.status()}}" placeholder="{{grade.name}}" value="{{grade.name}}">,
<input type="text" ng-model="studentGradeNew" size="2" class="status-{{grade.status()}}" placeholder="{{grade.score}}" value="{{grade.score}}"> <input class="btn-primary" type="submit" value="update">
</form>
</li>
フォームが指す関数は次のとおりです。
$scope.update = function(thisName, newName, thisScore, newScore) {
//run some code
};
すべきこと: 配列「成績」から生成されたリスト項目のインライン編集を可能にし、各項目は「成績」です。ここで問題が発生します。関数 $scope.update を呼び出す際に、thisScore と newScore の値が変数 {{grade.score}} と {{studentGradeNew}} から正常に渡されます。ただし、 thisName と newName に渡そうとした値はそうではありません。渡された引数をコンソールに送信すると、次のようになります。
undefined undefined 98 88
新旧の呼び名が通じない理由を調べてみたのですが、途方に暮れています。古いスコア変数と新しいスコア変数が正常に渡され、名前と同じようにフォームに関連して宣言されているため、特に奇妙です。私は何かが欠けているに違いないのですが、何が思いつきません。