如何将项目推入角度$ scope.array?

时间:2015-04-19 13:11:59

标签: javascript angularjs for-loop

我做错了但我看不清楚(这可能是因为我的AngularJS技能很低)。 我的HTML中有一个简单的ng-repeat:

<ul>
  <li ng-repeat="fot in fotografia"><img src="{{fot.path}}"></li>
</ul>

这是我的app.js:

myApp.controller('homeController', function($scope) {
    // fotografia = []; is here only because I get an error otherwise,
    // which means my later for loop can't access the $scope.fotografia

    fotografia = [];
    $scope.fotografia = [
        {path:'img/fotografia/fot_1.jpg'},
        {path:'img/fotografia/fot_2.jpg'}
    ];

    // I want to add more images with this:
    for(var i=0; i<5; i++) {
        fotografia.push({
            path: 'img/fotografia/fot_'+[i]+'.jpg'
        });
    }
});

Ng-repeat与我在数组中已有的2张图像(fot_1.jpg,fot_2.jpg)一起正常工作。循环就是问题所在。如何将更多项目推入我的阵列?

3 个答案:

答案 0 :(得分:7)

将它们推到示波器中的阵列上。 angular将更新视图。

for(var i=0; i<5; i++) {
    $scope.fotografia.push({
        path: 'img/fotografia/fot_'+[i]+'.jpg'
    });
}

答案 1 :(得分:1)

fotografia$scope对象的属性,因此您可以执行以下操作:

for(var i=0; i<5; i++) {
        $scope.fotografia.push({
            path: 'img/fotografia/fot_'+[i]+'.jpg'
        });
    }

答案 2 :(得分:1)

当范围内的所有内容都已更改或您使用时,Angular将更新视图 $scope.digest()。 所以只需将项目推入范围内的数组,删除 fotografia = []; 因为你不需要它。 就像这样:

```

myApp.controller('homeController', function($scope) {
    $scope.fotografia = [
        {path:'img/fotografia/fot_1.jpg'},
        {path:'img/fotografia/fot_2.jpg'}
    ];
    for(var i=0; i<5; i++) {
        $scope.fotografia.push({
            path: 'img/fotografia/fot_'+[i]+'.jpg'
        });
    }
});

```

相关问题