1

angularjs navite selectディレクティブでは、モデルバインディングは一方向だけですが、ui-selectでは常に双方向バインディングと思われます。ここでAngularjs:ui-selectを作成するには、片方向のモデルのバインディングしかありませんか?

<ui-select ng-model="uiSelected.animal"> 

    <ui-select-match> 
      <span ng-bind="$select.selected.name"></span> 
    </ui-select-match> 

    <ui-select-choices repeat="animal in (animals | filter: $select.search) track by $index"> 
     <span ng-bind="animal.name"></span> 
    </ui-select-choices> 

</ui-select> 

は私の問題を展示plunkerです:https://plnkr.co/edit/FkZsFcMrTveWjXR5HNyT?p=preview

私の問題:

ように、どのように私は、モデルと結着一つの方法を持っているだけに、UI選択しますか選択したスコープモデルを変更すると、ui-selectにバインドされませんか?私が言い換えると、どうやってui-selectを角度ネイティブ選択のようにするのですか?

答えて

1

動物/車に$ watchを追加し、選択したオブジェクトを別の$ scope変数に保存しなければならない場合があります。私は別の方法を見ません、動物の配列のオブジェクト上のuiSelectedの参照以来。オンselectイベント

用途:

on-select="onSelectCallback($item, $model)" 

このplunkerを見ている:これで単方向結合https://plnkr.co/edit/Zcb9xlPm6TW7DFk1sjAO?p=preview

+0

は提案をいただき、ありがとうございます。私はこれを考えました。しかし、正直言って、これはちょっとした汚れのような感じです。私のモデルを動的に拡張することができるので、これを固定する方法がきれいであれば素晴らしいでしょう。 – ccostel

+0

申し訳ありませんが、カスタムディレクティブ(ui-select)を使用しているため、モデルバインディングを変更できない恐れがあります。 ui-selectは、選択した値を直接ng-model属性にバインドします。 $ scope.animals配列内の項目のuiSelected.animal参照。配列内のオブジェクトが変更された場合、uiSelected.animalはオブジェクトのコピーではなく参照だけなので、uiSelected.animalに直接影響します。 – Nils

3

を使用し、

{{::animal.name}} 
+0

うーん、私はこの単純なアプローチが本当に好きです。問題は、私のモデルが依然としてバインドされたままであり、後でそれらをRESTエンドポイントに投稿する必要があることです。ビューだけでなくモデルのための単方向バインディングを持つ方法はありますか? – ccostel

+0

@costelスコープの値を分離してみてください。この記事をチェックしてください。http://onehungrymind.com/angularjs-sticky-notes-pt-2-isolated-scope/ – Vinay

関連する問題