2013-09-25 200 views
6

我有一个模型,它可以包含任何一组属性。AngularJS:绑定到所有对象属性?

我想知道如果我可以绑定到每个对象属性,而不需要提前知道属性值。

拿这个举例来说

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'}, 
        {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> 

这让我定义的参数任意设定,但仍然没有采用了棱角分明的问题进行绑定。

回答

10

没有问题:

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

它在文档,以及:http://docs.angularjs.org/api/ng.directive:ngRepeat

+0

真棒!非常感谢,因为我没有先检查文档! – Yablargo

+1

@Yablargo - 与角,文档可以是一个完整的命中或错过:) – tymeJV

+0

我把那么多的小提琴 - 但这些似乎是只读的,这是正常的吗?我希望能够编辑这些。我在我的主要问题中发布了小提琴。当我尝试执行类似obj。{{key}}的操作时,这不会解析权限,并且绑定到{{value}}会生成只读框。 – Yablargo