ng-repeatを使用してHTMLでフォームを作成し、スコープ内のオブジェクトからフォーム要素を生成します。私はまた、そのオブジェクトを使ってng-repeat以外の要素を生成します。ng-repeat内のAngular Scope内のオブジェクトを変更する
簡略化した例は、HTMLで次のようになります。
<div ng-app="App">
<div ng-controller="Ctrl">
<div class="block1">
<form ng-repeat="(key, value) in test">
<label>{{key}}</label>
<input ng-model="value" />
<p>{{value}}</p>
</form>
</div>
<div class="block2">
<p>
{{test.a}}
</p>
<p>
{{test.b}}
</p>
</div>
</div>
</div>
、これはJSで:この例では
angular.module('App', []);
function Ctrl($scope) {
$scope.test = {
a:"abc",
b:"def"
}
}
、ブロック2内のテキストがtest.a
とtest.b
の初期値に設定されています。ループ内の入力値と<p>
の値も初期値に設定されます。
入力内の値を変更すると、ng-repeatブロック内の<p>
の値は正しく更新されますが、block2の<p>
タグは更新に失敗します。
これはなぜ動作ですか? ng-repeatは独自の分離スコープを作成しますか?もしそうなら、どうすればコントローラレベルのスコープを更新することができますか?また、誰かがこの行動の背後にある考え方やそれが提供する利点について説明することができますか?
感謝行動の明確な説明のために。私の使用例では、 "test"のプロパティを外部スコープの名前で参照する必要があるため、配列は私のためには機能しませんが、サブオブジェクトは正常に動作しているようです。 –
My ObjectのキーはUNIXの時間なので、これは非常に難しいです。 – neaumusic
@neaumusicのコメントは明確ではありません。 – charlietfl