在ng-repeat值中使用动态值

时间:2015-01-14 07:00:13

标签: angularjs angularjs-ng-repeat

如何根据filterOption获取对象中的值以进行迭代?宽度还是高度?我需要绑定到模型吗?大多数其他类似的问题都与模型有关。

目标: ng-repeat="section in prefs.filter.DYNAMIC_VALUE_FROM_filterOption

不输出任何内容: ng-repeat="section in prefs.filter[0]

成功但不动态 - 宽度是硬编码的。 ng-repeat =“prefs.filter.width中的部分”

FIDDLE http://jsfiddle.net/xyp6y1ap/2/

JAVASCRIPT

function MainCtrl($scope) {

    $scope.prefs = {
        atts: ['width', 'height'],
        filter: {
            width: ['160', '180', '300', '728'],
            height: ['90', '150', '250', '600'],

        },
        filterOption: 1

    };

}

HTML中的REPEATER

       ng-repeat="section in prefs.filter.DYNAMIC_VALUE"

       ng-repeat="section in prefs.filter.width"

2 个答案:

答案 0 :(得分:3)

就像你在JavaScript中一样。

我假设

$scope.prefs.filterOption是要迭代的属性的数组$scope.prefs.atts中的索引。

因此,该属性的名称为$scope.prefs.atts[$scope.prefs.filterOption]

因此,想要迭代的实际数组是

$scope.prefs.filter[$scope.prefs.atts[$scope.prefs.filterOption]]

所以你想要的,在HTML

ng-repeat="section in prefs.filter[prefs.atts[prefs.filterOption]]"
但是,这非常令人费解。控制器的目的是为视图提供易于使用的模型。而不是动态设置索引的值,它本身允许访问属性的名称,它本身允许访问宽度或高度的数组,你应该简单地动态设置一个指向数组本身的变量。

答案 1 :(得分:0)

您可以在ng-repeat中使用键值对,如:

<section ng-repeat="item in prefs.filter">
    <section ng-repeat="(key,value) in item">
        {{value}}
    </section>
</section>

http://plnkr.co/edit/IPY2YUWLlquWKI7I5MM2?p=preview