0

我正在遍历一个名为 fieldset.fields 的数组

一切正常,除了涉及到这个:

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

大多数值都有效,'like' test 和 'asdf' 但如果我设置field.type = file,并查看检查器,它会显示 type="text",删除默认属性(type="{{field.type}}")也无济于事。

示例数组:{标签:'名字',名称:'名字',键:'entry.810220554',类型:'文本',必需:true},{标签:'图片',名称:'图像',键:'entry.810220554',类型:'file',必需:true},

完整模板:

<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>
4

2 回答 2

1

看起来这是 Chrome 中的一个问题。一旦创建元素,Chrome 就无法将字段的输入类型更改为“文件”。将类型更改为 Checkbox 有效,文件是我发现的唯一一个还不能工作的..

我将您的样本放在 plnkr 中,它在 Firefox 中运行良好:http ://plnkr.co/edit/tCSZDz9xjI2Hla3rNQ97?p=preview

但即使我在 chrome devTools 中手动将输入类型调整为“文件”,它也不会呈现文件输入。

解决方案: 现在认为最好的解决方案是实际创建元素。使用自定义指令很容易做到这一点。这应该是不必要的,但我认为这是你必须做的。

于 2013-10-02T14:26:45.673 回答
0

根据此处选择的答案:

AngularJs:如何检查文件输入字段的变化?

对文件没有或有限的绑定支持。这意味着尝试绑定到文件可能会产生问题。

于 2013-10-02T14:16:42.337 回答