我有一个Model,它接受一个可以包含任何属性集的对象.
以此为例
var object1 = { Name: '1',Identifier: '12345',Password: 'password' } var object2 = { Name: '2',Identifier: 'object_two' } var objects = [object1,object2];
我的对象可以具有不同且唯一的属性,我想将其绑定到表单.
我知道我可以使用for(对象中的var属性)并遍历每个对象 – 但我可以使用AngularJS绑定做同样的事情吗?
我想做一些事情:
<ul><li ng-repeat="attrib in obj"> {{attrib}} </li</ul>
编辑:感谢下面的回答,我进一步了解.我似乎无法与此实现双向绑定.这个小提琴说明了我要做的事情:
我基本上想要使用这样的东西绑定:
<p ng-repeat="(key,value) in obj"> {{key}} : <input ng-model="obj[key]" /> </p>
这是有效的,除了我一次只能输入一个字符 – 有趣.
最终编辑:我找到了一个可接受的替代方案,以防其他人遇到此问题.我没有能力直接绑定到一个对象没有一些问题,但我能够绑定到像下面的答案中的文档状态的数组.
以下小提琴完成了我需要做的事情,而只是稍微冗长一点.
function ctrl($scope) { $scope.objects = [ [ {Name: 'Name:',Value: 'Joe'},{Name: 'Identification',Value: '1'},{Name: 'Password',Value: 'secret'} ],[ {Name: 'Name:',Value: 'Jane'},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绑定没有问题.
解决方法
没问题:
<li ng-repeat='(key,value) in obj'> {{key}} : {{value}} </li>