angularjs:带条件类型属性的输入标签?

时间:2014-12-03 10:20:55

标签: android angularjs html5 input android-softkeyboard

当我面临与Android 4.4 Samsung Galaxy TabS相关的问题时,< input type =" number">这不会暴露键盘中的点键(因此阻止用户输入小数值),我需要有条件地设置type =" text"对于这样的设备,我应该怎么做,因为以下不起作用?

<input type="{{device.isAndroid?'text':'number'}}">

2 个答案:

答案 0 :(得分:3)

您可以使用ng-attr-type

更改输入类型
<input ng-attr-type="{{$ctrl.isNumber? 'number' : 'text'}}">

P.S。我知道它已经关闭,但我认为更新有用,因为谷歌搜索会返回此页

答案 1 :(得分:1)

您无法动态更改输入的类型,因此我建议对这两种类型进行硬编码并使用ng-switch或ng-if根据设备显示其中一种。

例如

<input type="text" ng-if="device.isAndroid">
<input type="number" ng-if="!device.isAndroid">

或通过指令:http://plnkr.co/edit/0y8I6PIQqot9ZdN6OBnw?p=preview

app.directive('myDirective', [function() {

return {
    restrict: 'A',
    scope: {
        isAndroid: '='
    },
    link: function(scope, element, attr, ctrl) {

        scope.$watch('isAndroid', function(newValue) {
            if (newValue === true) {
                element.attr('type', 'number')
            } else {
                element.attr('type', 'text')
            }
        })

    }
};
}]);

HTML:

<input my-directive is-android="device.isAndroid">