私が取り組んできた問題:
元の問題 (一方向バインディングのみに対処) は、ここで見つけることができます: コントローラからディレクティブに ngModel を渡す/更新できません
ディレクティブ内からビューへの一方向バインディングを取得することができました。しかし、たとえば、ページの読み込み時に選択をプッシュしたい場合、双方向バインディングを機能させることができません。最初のディレクティブ内の ng-model がデータを取得していることがわかりますが、子ディレクティブでさまざまなスコープ設定を試してみましたが、それが壊れるか、以前と同じことをします-何もしません。
ビューで ng-model にアタッチされたバインディングに単純なオブジェクトをプッシュすると、ウォッチャーは $viewValue をディレクティブのスコープ オブジェクトに割り当てるように、基本的な$watch
関数をセットアップしました。それはこれを行い、ui-select に割り当てられた ng-model バインディング内のオブジェクトをはっきりと見ることができますが、ディレクティブは既存の選択を一掃することによってのみ応答します。
ウォッチ機能は次のとおりです。
scope.$watch(function() {
return ngModel.$viewValue;
}, function(newVal) {
console.log(newVal, scope.options);
scope.options.selected = newVal;
});
この関数を使用して、ui-select を操作するたびにビューを更新します (正常に動作します)。
scope.changer = function() {
ngModel.$setViewValue(scope.options.selected);
console.log(scope.options.selected);
};
したがって、予想される動作は次のとおりです。
- ui-select からの選択は select に表示され、ビューにも渡されます
- 「変更」ボタンをクリックすると、データがビューに表示され、ui-select に渡されます。