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選擇?如果我改述:我如何使UI選擇行爲像角本地選擇?

回答

1

您可能需要爲動物/汽車添加$ watch,並將您選擇的對象保存在不同的$ scope變量中。我沒有看到另一種方式,因爲uiSelected引用了動物數組中的對象。

使用上選事件:

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

看一看這個plunker:本https://plnkr.co/edit/Zcb9xlPm6TW7DFk1sjAO?p=preview

+0

謝謝你的建議。我想到了這一點。但說實話,我覺得這是一個骯髒的修復。由於我的模型可以動態地在數字中擴展,所以如果有一種更加整潔的方法來解決這個問題,那將是非常好的。 – ccostel

+0

對不起ccostel,但由於您使用自定義指令(ui-select),所以我擔心無法更改模型綁定。 ui-select會將選定的值直接綁定到它的ng-model屬性。對$ scope.animals數組中的項目使用uiSelected.animal引用。如果數組內的對象發生更改,這將直接影響uiSelected.animal,因爲它只是引用而不是對象的副本。 – Nils

3

使用單向綁定,

{{::animal.name}} 
+0

嗯,我真的很喜歡這種簡單的方法。問題是我的模型仍然保留綁定,我需要稍後將它們發佈到REST端點。有沒有辦法讓這種單向綁定不僅適用於視圖,還適用於該模型? – ccostel

+0

@ccostel嘗試隔離您的範圍值..檢查這篇文章http://onehungrymind.com/angularjs-sticky-notes-pt-2-isolated-scope/ – Vinay

相關問題