我正在尝试在 Angular 中创建一个棋盘,并且大部分时间都在从成功走向成功。我已经创建了一个表示起始位置的数据结构,现在我的 HTML 就像我在下面粘贴的一样简单。用于返回类的相关代码有效,但我正在尝试添加一个采用相同参数的 ng-click 处理程序(第一行仅在下面的 HTML 中;实际上等同于第一列,或棋盘上的“A”文件)。
但是,未达到 ng-click、actions.move() 的相关 Javascript 代码。在标记下方,我粘贴了一些 Javascript,并在其下方粘贴了一些生成的 DOM。我究竟做错了什么?
HTML:
<div ng-controller='ChessBoardController'>
<table>
<tr ng-repeat="rank in model.board">
<td ng-class="styles.square($index, 'A')" ng-click="actions.move($index, 'A')"><span ng-bind-html="rank.A"></span></td>
<td ng-class="styles.square($index, 'B')" ><span ng-bind-html="rank.B"></span></td>
<td ng-class="styles.square($index, 'C')" ><span ng-bind-html="rank.C"></span></td>
<td ng-class="styles.square($index, 'D')" ><span ng-bind-html="rank.D"></span></td>
<td ng-class="styles.square($index, 'E')" ><span ng-bind-html="rank.E"></span></td>
<td ng-class="styles.square($index, 'F')" ><span ng-bind-html="rank.F"></span></td>
<td ng-class="styles.square($index, 'G')" ><span ng-bind-html="rank.G"></span></td>
<td ng-class="styles.square($index, 'H')" ><span ng-bind-html="rank.H"></span></td>
</td>
</tr>
</table>
</div>
Javascript:
$scope.styles = (function() {
return {
square: function(index, file) {
if ((index + (file.charCodeAt() % 2)) % 2) {
return 'lightSquare';
}
else {
return 'darkSquare';
}
}
}
})();
$scope.actions = (function() {
return {
move: function(index, file) {
console.log(arguments);
}
}
});
Generated DOM:
<td ng-class="styles.square($index, 'A')" ng-click="actions.move($index, 'A')" class="darkSquare"><span ng-bind-html="rank.A" class="ng-binding">♖</span></td>