Javascript 为什么它总是在AngularJS中选择第一个TD小区

Javascript 为什么它总是在AngularJS中选择第一个TD小区,javascript,angularjs,Javascript,Angularjs,我是新来安格拉斯的,我想做一个小游戏 我有一张桌子: <table class="board"> <h1>Table</h1> <input type="number" ng-model="val"><button ng-click="ctrl.foo(val)">PRESS</button> <tr ng-repeat="tr in ctrl.arr"> <td ng-repeat

我是新来安格拉斯的,我想做一个小游戏

我有一张桌子:

<table class="board">
<h1>Table</h1>
<input type="number" ng-model="val"><button ng-click="ctrl.foo(val)">PRESS</button>
    <tr ng-repeat="tr in ctrl.arr">
        <td ng-repeat="td in ctrl.arr" ng-click="ctrl.getIndex(tr, td)">{{ctrl.sign[$parent.$index][$index]}}</td>
    </tr>
</table>

桌子
按
{{ctrl.sign[$parent.$index][$index]}
这是此表的代码,用于标记您单击的单元格:

this.foo = function(size){

        this.arr = [];
        for(var i = 0; i < size; i++){
            this.arr.push(i);
        }
    }
    this.getIndex = function(tr, td){

        this.sign = 'X';

        console.log(tr, td);
    }
this.foo=函数(大小){
this.arr=[];
对于(变量i=0;i
有人能解释一下为什么点击任何一个单元格总是只标记第一个单元格吗

错在哪里


错误在于,您将ctrl.sign指定为ctrl.push中的变量,但在使用html代码引用它时,将其视为二维数组

您在第一列中看到“x”的原因可以通过一个小示例来说明(尽管我不确定为什么,可能有人能够解释它……我认为这与javascript处理变量的方式有关)

因此,在您的代码中,我们可以通过创建一个2d数组并使用您现有的插入“x”的方法来修复它。我们将调整foo以创建/填充二维数组,并按一下按钮进行插入:

this.foo = function(size) {

    this.arr = [];
    for (var i = 0; i < size; i++) {
        this.arr.push(i);
        //fill our 2d array
        this.sign.push([]);
        for (var g = 0; g < size; g++) {
           this.sign[i].push(''); 
        }
    }
}
this.push = function(parent, index) {
   this.sign[parent][index] = 'X';
   console.log(parent, index)
}
this.foo=函数(大小){
this.arr=[];
对于(变量i=0;i

在这一点上,您还可以将arr换成ng重复的登录。请查看工作

非常感谢您的充分解释:)
this.foo = function(size) {

    this.arr = [];
    for (var i = 0; i < size; i++) {
        this.arr.push(i);
        //fill our 2d array
        this.sign.push([]);
        for (var g = 0; g < size; g++) {
           this.sign[i].push(''); 
        }
    }
}
this.push = function(parent, index) {
   this.sign[parent][index] = 'X';
   console.log(parent, index)
}