我有一個UI組件,我試圖通過支持兩種不同的數據格式來保持靈活性。有條件地選擇模型
我想有條件地挑選哪個範圍屬性與input
元素的ng-model
配對。
此代碼不能正常工作,但它表達了我的意圖:
<input type="text"
ng-model="treeNode.attachedEntity.name || treeNode.name"
/>
下面的代碼工作,但複製了很多(這個例子很簡單,但在實際應用上附着有很多行爲該輸入)
<!-- Rename File -->
<input ng-if="!treeNode.attachedEntity"
ng-model="treeNode.name"
type="text"/>
<!-- Rename Folder -->
<input ng-if="treeNode.attachedEntity"
ng-model="treeNode.attachedEntity.name"
type="text"/>
的背景下,如果它可以幫助:這個模型有點像一個文件系統,其中的物體連接到treeNode的代表文件夾結構。沒有附加對象的treeNode是一個文件夾。我想要一個重命名操作來決定是否重命名文件夾或文件,具體取決於它在哪個對象上運行。
任何方式,我可以建立這樣的模板代碼更簡單?一個擴展ng-model的指令? ng模型的選項我不知道?控制器中的返回正確模型的getter函數?
謝謝!
getter函數將是我的第一本能。但是變得富有創意,您可以根據中繼器字段上的屬性或您正在使用的任何屬性,在模型對象上引用不同的屬性。 [Plunker](http://plnkr.co/edit/byLor7D7iIU4XzIFWBgc?p=preview) –
是一個getter將是我想要的東西像ng-model =「getModel(param)[property]」getModel會返回一個對象的引用,你想要觀察的缺點是你必須返回對象引用而不是屬性來保持鏈接。 –
像http://jsfiddle.net/NhPEN/可以ilustrate我的觀點。非常簡單,沒有道理,但是可以說明如何使用函數來檢索對象並將其屬性用作模型,您可以使用其他函數來生成屬性名稱並使其完全動態 –