2

これは、Angularjs での動的バインディングに関する私の問題を説明する Plunker です。

http://plnkr.co/edit/fGgtOZ5IrJVo9QasQALc?p=preview

Angularjs を使用する前は、次のような入力の名前/値を使用して、バックエンド処理に望ましいデータ構造を生成することに慣れていました。

<input type="text" name="computer[details][][purchaseddate]" />

<input type="text" name="computer[details][][warrantyperiod]" />

Angularjs ng-model を使用すると、次のような複雑なデータ構造をバインドできます。

<input type="text" ng-model="computer.parts[0].name" />

ただし、次のような動的プロパティでは機能しません。

<input type="text" ng-model="computer.details[0].name" />

Angular は、プロパティ「名前」を未定義の「詳細 [0]」に設定しようとしていると私に言い続けます。私はそれを認識していますが、動的プロパティを指定できる前の入力の名前/値で同じ動作を取得する方法はありますか?最初に宣言する必要はありませんか?

ありがとうございました、

4

2 に答える 2

3

まだ存在しない属性へのバインドは機能します。a.b.c$scope.a が存在しなくてもバインドできます。Angular は、オンザフライでオブジェクトと属性を作成します。

<input type="text" ng-model="a.b.c" />

しかし、まだ存在しない配列要素にバインドしようとしています:

<input type="text" ng-model="a.b[0].c" />

Angular は配列をインスタンス化し、その中に空のオブジェクトをプッシュしてから、その名前を割り当てます。どうやらこれはうまくいきません。

于 2013-06-25T17:03:05.367 に答える
1

私は同じ状況に遭遇し、すべてを試しました。

これは、2つの深いng-repeat内で動的な値を取得する方法です:

JS:

$scope.newContact = {
    name: [],
    phone: [],
    email: [],
    notes: []
};

$scope.saveNewContact = function (idx) {
    console.log($scope.newContact.name[idx]);
};

HTML:

<input type="text" ng-model="newContact.name[$index]" />
<input type="text" ng-model="newContact.phone[$index]" />
<input type="text" ng-model="newContact.email[$index]" />
<input type="text" ng-model="newContact.notes[$index]" />
<button ng-click="saveNewContact($index)">Save</button>
于 2014-12-09T17:39:01.683 に答える