2014-10-12 67 views
0

我有一個我想重構的ng-switch語句。它看起來像這樣:具有共享選項的ng-switch

<div ng-switch on="property.type"> 
    <input type="text" ng-switch-when="string" ng-model="property.value" placeholder="Property value"> 
    <select ng-switch-when="bool" ng-model="property.value" ng-options="value for value in [true,false]" placeholder="Property value"></select> 
    <input type="number" ng-switch-when="int" ng-model="property.value" placeholder="Property value"> 
    <input type="text" ng-switch-default ng-model="property.value" placeholder="Property value"> 
</div> 

可以注意到ng-modelplaceholder選項是相同的所有情況。我的問題是:我可以重構這個以某種方式讓這些選項只寫一次嗎?

謝謝!烏里

回答

0

雖然不能完全重構,以避免所有重複,你可以通過將輸入標籤減少一點它:

<div ng-switch on="property.type"> 
    <select ng-switch-when="bool" ng-model="property.value" ng-options="value for value in [true,false]" placeholder="Property value"></select> 
    <input type="{{property.type == 'int' ? 'number' : 'string'}}" ng-switch-default ng-model="property.value" placeholder="Property value"> 
</div> 

這可以在http://plnkr.co/edit/FybDC1I4U7rSC6GZJ3az

待觀察,如果這是一個項目,我正在努力,我懷疑我不會進一步重構它,留下少量的重複標記,以保持清楚。