改变变量的Ng重复

时间:2014-08-14 19:41:30

标签: javascript angularjs angularjs-ng-repeat

使用ng-repeat="i in getNumber(myNumber) track by $index"重复特定次数,该次数由HTML中的select对象定义。

var number = parseInt($( "#number option:selected" ).text());
        $scope.myNumber = number;
        $scope.getNumber = function(num) {
            return new Array(num);   
        }

完美无缺。现在,我希望在我更改#number option:selected时进行更新。 var number通过执行类似$( "#number" ).change(function() {});的操作来接收此内容,但即使我将上面的代码块放在那里,ng-repeat也只会更改onload。

如何将ng-repeat与变更变量一起使用?

2 个答案:

答案 0 :(得分:1)

不要使用jQuery事件处理程序,因为事件不会触发摘要周期,除非你告诉它。您可以只为选择框提供ng-model,并在更改选择时自动启动摘要周期以更新绑定。

<select ng-model="myNumber">
    <option value="1">1</option>
    <option value="2">2</option>
    <option value="3">3</option>
    <option value="4">4</option>
</select>
<div ng-repeat="i in getNumber(myNumber)">
    I am at index: {{$index}}
</div>

JSFiddle

答案 1 :(得分:0)

您可以像这样观看迭代次数:

$scope.iteration = new Array(2);
$scope.$watch('repeat_num',function(new_val) {
    if (new_val) {
        $scope.iteration = new Array(parseInt($scope.repeat_num));
    }  
});

HTML

<select ng-model="repeat_num">
    <option value="1">1</option>
    <option value="2">2</option>
    <option value="3">3</option>
    <option value="4">4</option>
</select>
<ul>
    <li ng-repeat="i in iteration track by $index">Value</li>
</ul>