Angular データ バインディングを使用して、ユーザーがメニューで選択した項目を変更したときに JavaScript プロパティを強制的に変更するのは簡単です。ただし、メニューの生成に使用されるモデルが変更されたときに、データ バインドされたプロパティを強制的に変更する方法がわかりません。
このフィドルは動作を示しています: http://jsfiddle.net/2pHGX/。changeOptions をクリックしてモデルを変更すると、選択オプションが正しく変更されます。ただし、データ バインドされたプロパティはすぐには変更されず、ユーザーが別のメニュー オプションを選択したときにのみ変更されます。
<body ng-app ng-controller="bodyCtrl">
<select ng-model="selection" ng-options="option for option in options">
</select>
<button ng-click="changeOptions()">changeOptions</button>
<br>
selection: {{selection}}
</body>
function bodyCtrl($scope) {
$scope.options = [10, 20, 30];
$scope.changeOptions = function() {
$scope.options = [11, 22, 33];
};
}
ユーザーが別のオプションを選択したか、モデル、つまりオプションが変更されたため、選択したオプションが何らかの理由で変更されたときに、データ バインドされたプロパティを更新する必要があります。でこれを機能させることはできますが$watch
、データ バインディングだけでは不十分な理由がわかりません。Angular でこれを達成する最善の方法は何ですか? データバインディングに関する基本的なことを誤解していますか?