2013-10-02 57 views
0

我通過循環數組稱爲fieldset.fields設置類型=「{{價值}}​​」和價值=文件有角?

一切正常,當談到這個情況除外:

type="{{field.type || 'text'}}" 

最爲看重的工作,「喜歡」試驗和「自衛隊」,但如果我設置field.type = file,然後查看檢查器,它說type =「text」,刪除默認屬性(type="{{field.type}}")也沒有幫助。

樣本陣列: { 標籤: '名字', 名: '姓名', 鍵: 'entry.810220554', 類型: '文本', 需要:真 },{ 標籤: '圖片報', 名稱: '形象', 關鍵: 'entry.810220554', 類型: '文件', 要求:真實 },

完整的模板:

<div 
     ng-repeat="field in fieldset.fields" 
     ng-switch="field.type" 
> 
     <div class="fieldset" ng-switch-when="radio" class="options"> 
      <!--radiobuttons--> 
      <div class="radiobutton" ng-repeat="mylabel in field.labels"> 
       <input 
        type="radio" 
        name="{{field['key']}}" 
        value="{{mylabel.name}}" 
        id="{{mylabel.name}}" 
        ng-model='$parent.my_radio_button' 
        ng-class='{ selected: (my_radio_button == mylabel.name) }' 
       > 
       <label for="{{mylabel.name}}"> 
        {{mylabel.label}} 
       </label> 
      </div> 
     </div> 


     <label 
      ng-switch-default 
      for="{{field.name}}" 
      >       
      {{field.label}} 
     </label> 
     <!--text-input--> 
     <input 
      ng-switch-default 
      type="{{field.type || 'text'}}" 
      name="{{field.key}}" 
      id="{{field.name}}" 
      ng-required="field.required" 
     /> 
    </div> 
</div> 

回答

1

看起來這是Chrome中的問題。一旦創建元素,Chrome無法將字段的輸入類型更改爲「文件」。更改爲複選框作品的類型,文件是唯一一個我發現,還沒有工作..

我把你的樣品中plnkr,它在Firefox正常工作:http://plnkr.co/edit/tCSZDz9xjI2Hla3rNQ97?p=preview

但是即使我手動在chrome devTools中將輸入類型調整爲「file」,它將不會呈現文件輸入。

解決方案: 現在認爲您的最佳解決方案是實際創建元素。使用自定義指令很容易。這應該是不必要的,但我認爲這是你必須要做的。

+1

我爲此創建了一個錯誤:https://code.google.com/p/chromium/issues/detail?id=303117 –

+0

這裏有另一個小工具來展示它不只是Angular! http://jsfiddle.net/AHTZH/ –