2013-09-25 199 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