6

我有一个模型,它接受一个可以包含任何属性集的对象。

我想知道是否可以绑定到每个对象属性,而无需提前知道属性值。

以此为例

var object1 = 
{
    Name: '1',
    Identifier: '12345',
    Password: 'password'
}

var object2  =
{
    Name: '2',
    Identifier: 'object_two'
}

var objects = [object1,object2];

我的对象可以具有不同且独特的属性,我想将其绑定到表单。

我知道我可以使用 for (var property in object) 并遍历每个对象——但是我可以用 AngularJS 绑定做同样的事情吗?

我想做一些类似的事情:

<ul><li ng-repeat="attrib in obj">
                {{attrib}}
            </li</ul>

编辑:感谢下面的答案,我已经走得更远了。我似乎无法实现双向绑定。这个小提琴说明了我正在尝试做的事情:

http://jsfiddle.net/EpqMc/17/

我基本上想使用这样的东西进行绑定:

<p ng-repeat="(key,value) in obj">                    
                    {{key}} : <input ng-model="obj[key]" />

                </p>

这行得通,只是我一次只能输入一个字符——很有趣。

最终编辑:我找到了一个可以接受的替代方案,以防其他人遇到这个问题。我无法在没有一些问题的情况下直接绑定到对象,但我能够绑定到像下面答案中的文档状态这样的数组。

下面的小提琴完成了我需要做的事情,同时只是稍微冗长一些。

http://jsfiddle.net/8ENnx/9/

function ctrl($scope) {
    $scope.objects =
                [
                [
                    {Name: 'Name:', Value: 'Joe'},
                    {Name: 'Identification', Value: '1'},
                    {Name: 'Password', Value: 'secret'}
                ],
                    [
                    {Name: 'Name:', Value: 'Jane'},
                    {Name: 'Identification', Value: '2'},
                    {Name: 'Weather', Value: 'Sunny'}
                ]
                ];

//    $scope.setSelected = ?????;

}

<div ng-app>
    <div ng-controller="ctrl">
        Objects
        <ul>
              <br/>
                Listing of properties:
                <br/>

            <li ng-repeat="obj in objects" class="swatch">                               
                {{obj}}
                <p ng-repeat="prop in obj">
                    {{prop.Name}}: <input ng-model="prop.Value" /></p>


            </li>
        </ul>

    </div>
</div>

这允许我定义任意一组参数,但仍然使用 angular 绑定没有问题。

4

1 回答 1

10

没问题:

<li ng-repeat='(key, value) in obj'>
    {{key}} : {{value}}
</li>

它也在文档中:http://docs.angularjs.org/api/ng.directive: ngRepeat

于 2013-09-25T18:51:58.207 回答