6

プロパティのセットを含むことができるオブジェクトを取るモデルがあります。

プロパティの値を事前に知らなくても、各オブジェクトのプロパティにバインドできるかどうか疑問に思っています。

これを例にとります

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>

一度に 1 文字しか入力できないことを除けば、これは機能します。興味深いことです。

最終編集: 他の誰かがこの問題を抱えている場合に備えて、受け入れ可能な代替手段を見つけました。問題なくオブジェクトに直接バインドすることはできませんでしたが、以下の回答のドキュメントの状態のような配列にバインドできました。

次のフィドルは、私がする必要があることを達成しますが、少しだけ冗長です。

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 に答える