设置输入类型="文件"使用AngularJS表达式无法在Chrome中运行

时间:2014-05-29 19:45:37

标签: javascript html html5 angularjs

我正在使用Angular中的表单构建器应用程序,并且在Chrome中遇到了一个奇怪的错误。我基于变量动态设置表单输入类型。这似乎适用于所有输入类型,除了" file",它将始终更改为" text"在Chrome中。一个简单的例子如下:

<div ng-app="app">
  <input type="{{'file'}}" /><br />
  <input type="{{'color'}}" /><br />
  <input type="{{'button'}}" value="button" />
</div>

jsfiddle

2 个答案:

答案 0 :(得分:5)

确实,这听起来像是一个错误,但您可以使用ngAttr轻松绕过它:

<input ng-attr-type="{{'file'}}" />
<input ng-attr-type="{{'color'}}" />
<input ng-attr-type="{{'button'}}" value="button" />

答案 1 :(得分:0)

我提出了ng-type指令的基本版本:

angular.module('ng').directive('ngType', function ($timeout) {
    return {
        scope: {
            ngType: "="
        },
        link: function ($scope, element, attr) {
            $scope.$watch('ngType', function (newValue, old) {
                element.attr('type', newValue);
            });
        }
    };
});

http://jsfiddle.net/camus/x649Q/2/

而“bug”得到修复。

编辑:黑洞答案是正确的。