2016-01-12 37 views
2

我一直在尋找使用Angular Schema Form來爲我的項目定義所有的表單,但是對我來說大量的突出之處在於,當我們定義一個select/drop- down元素,那麼必須在JSON中指定值。這不會讓我感到非常靈活,因爲我希望從角度控制器/工廠中檢索這些值,因爲它們目前在示波器上可用。指定Angular Schema Form使用範圍選擇下拉選項

我已經做了相當多的搜索如何繞過這一點,但還沒有找到一個明確的解決方案或任何工作對我來說,所以我決定嘗試擴展選擇自己並添加映射到schemaFormDecoratorsProvider

我遵循Extending Schema Form的文檔,現在有一個定義我的Select控件的HTML代碼片段,當我在我的JSON模式中定義它時,這個代碼片段正在呈現。我希望能夠做的是通過JSON模式部分地指定ng-options屬性。我試圖做到這一點,但似乎沒有導致選擇選項被渲染。

這是我的選擇控制的部分:

<select ng-model="$$value$$" 
    ng-model-options="form.ngModelOptions" 
    sf-changed="form" 
    schema-validate="form" 
    ng-options="item.value as item.name for item in form.titleMap" 
    ng-disabled="form.readonly"> 
</select> 

,其中n選項定義,我希望能夠到無論是在我的JSON指定titleMap,它被解析爲對象在我的範圍和我可以在我的JSON中傳遞集合的名稱,然後通過form.titleMap當前的位置。

有人有這樣的經驗嗎?對我來說似乎是一個相當合理的要求,但在網上找不到有關它的很多幫助。

非常感謝。

+0

您是否嘗試過將數組傳遞給默認select元素的'tileMap'屬性?它應該支持動態賦值......文檔建議可以提供一個對象:「一個titleMap可以被指定爲一個對象(與JSON形式相同),其中propery是值,該屬性的值是名稱或名稱 - 值對象列表,後者在內部使用,並且是要使用的推薦格式。請注意,將titleMap定義爲對象時,值將限制爲字符串,因爲對象的屬性名稱始終是字符串。 「 – Claies

+0

我剛剛閱讀了文檔的這一部分,但我仍然不明白我如何引用Angular Scope中存在的東西。那裏的例子在那裏被定義爲JSON。 你是說我應該能夠將我的titleMap定義爲 ''titleMap「:agenciesArray' 或者什麼? – Glamdring

+0

JSON只是一個普通的對象。你應該能夠在創建表單時使用'titlemap:$ scope.myTitlemapObject'。您似乎也可以利用字符串值中的「{{}}」進行插值,但是我沒有機會嘗試如何實現。 – Claies

回答

0

有一些設計用於支持動態數據選擇的附加組件,庫沒有優先選擇,讓開發者選擇最適合他們的需求,但是我構建了Material Design裝飾器以包含angular-schema-form-external-options在裝飾器中,所以不需要附加組件。引導裝飾器在此階段不具備此功能。

angular-schema-form-external-options庫是基本的,但涵蓋了簡單的動態下拉數據人口的大多數要求

angular-schema-form-dynamic-select是具有多種配置選項更強勁,並配備充分的選擇。