我正在創建一個模板來顯示我的應用程序中的選擇字段。不過,我有4種不同類型的選擇字段。值= id,value = name,value = static_id和value = static_name(這很複雜......)。有條件地顯示選項中的選項與角
我打算將這些遷移到ngOptions,如果將來可能的話,但現在我試圖有一個選擇模板,它將處理所有4種類型的字段。
我目前使用ng-if來顯示select的不同'靜態'代碼,但是這會創建很多代碼,我想減少到這個單個模板中。
下面是一些代碼:
// shows a basic select field where option value = id
<div ng-if="field.type=='select'" class="form-group">
<select-field></select-field>
</div>
// shows a basic select field where option value = name
<div ng-if="field.type=='select_name'" class="form-group">
<select-field></select-field>
</div>
// shows a basic select field where option value = static_id
<div ng-if="field.type=='select_static_id'" class="form-group">
<select-field></select-field>
</div>
// shows a basic select field where option value = static_name
<div ng-if="field.type=='select_static_name'" class="form-group">
<select-field></select-field>
</div>
在這裏,所有的字段屬性是相同的,除了產生的選項。因此我爲什麼要模板化這個。
我試圖讓這個單一的模板有另一個ng - 如果裏面會檢測字段類型,從它讀取的JSON,然後相應地更改顯示的選項,就像這樣(顯示的4個示例中的2個):
<select
name={{field.name}}
class="form-control form-field {{relationshipUrl}}"
id={{field.name}}
data-is-autofocus={{field.focus}}
data-selectreq={{field.rules.selectreq}}
data-showhide={{field.rules.showhide}}
>
<option value="" selected>Please select...</option>
<span ng-if="field.type=='select'">
<option
value={{option.id}}
ng-repeat="option in cache[field.relationshipURL] | orderBy:'name || firstName'"
ng-selected="formData[field.name] == option.id">
{{option.name || option.firstName}}
</option>
</span>
<span ng-if="field.type=='select_static_name'">
<option
value={{option.name}}
ng-repeat="option in cache[field.relationshipURL] | orderBy:'name'"
ng-selected="formData[field.name] == option.name">
{{option.name}}
</option>
</span>
</select>
可能可怕的代碼以使用範圍內的選擇,但是這就是爲什麼我來給你很好的人。目前這種方法的作用在於它顯示了正確的選項,但是它顯示了兩次列出的選項,並且我認爲一旦包含所有選項類型,它將列出它們四次。我希望這是有道理的。提前致謝。
這是無效的HTML。在一個選擇中真的只能有2個標籤......'
打破更好的方法是過濾ng選項 – charlietfl