我在使用以下HTML时遇到问题,不幸的是我不知道正确的Angular.js术语来正确地标题这个问题。
<body ng-controller ="GuessingGamesController as gamesCtrl">
<h1>Guessing Game Test Page</h1>
<div id="Game">
<h2>Test Game</h2>
<form name="StartGameForm" ng-submit="gamesCtrl.startNewGame()" ng-show="{{gamesCtrl.game.id === -1}}">
<input type="submit" value="Start New Game" />
</form>
<ul>
<li ng-repeat="turn in gamesCtrl.game.turns">
{{turn.question}}?
<form name="ReplyForm" ng-submit="gamesCtrl.nextTurn({{turn}})" novalidate>
<input type="text" ng-model="turn.answer" />
<input type="submit" value="Submit Answer" />
</form>
</li>
</ul>
</div>
</body>
失败的陈述是ng-submit="gamesCtrl.nextTurn({{turn}})"
,我在Chrome的开发者控制台中看到的错误是
错误:[$ parse:syntax]语法错误:令牌&#39; {&#39;列无效键 从[gamesCtrl.nextTurn({{turn}})]开始的表达式中的21个 [{转}})]。
如何将当前的Angular.JS迭代器传递给表单提交中的函数?
答案 0 :(得分:5)
你不应该在表达式中使用插值,只需: -
gamesCtrl.nextTurn(turn);
来自当前执行范围的 turn
将传递给方法nextTurn
您也不需要在ng-show中进行插值,您只需提供将由ng-show指令计算的表达式(而不是插值,如果提供插值,实际绑定表达式将成为需要根据范围进行评估的值false / true: -
ng-show="gamesCtrl.game.id === -1"