我有一个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>
编辑:感谢下面的回答,我进一步了解.我似乎无法与此实现双向绑定.这个小提琴说明了我要做的事情:
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'},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>
它也在文档中:http://docs.angularjs.org/api/ng.directive:ngRepeat