2014-12-03 4 views
0

Как я столкнулся с проблемой, связанной с Android 4.4 Samsung Galaxy TabS относительно типа ввода < = «номер» >, который не раскрывает точечный ключ на клавиатуре (следовательно, чтобы пользователи не вводили десятичные значения), мне нужно условно установить тип = «текст» для такого устройства, как мне это сделать, поскольку следующее не работает?angularjs: входной тег с атрибутом условного типа?

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

ответ

1

Вы не можете изменить тип входного динамически, так что я бы рекомендовал Кодирую обоих типов и использование нг-переключатель или нг-если показать тот или другой в зависимости от устройства.

, например

<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"> 
+0

Я подумал об этом, но подозреваю, что лучше подходит более легкий подход. Может ли какая-нибудь директива помочь? @rmuller –

+0

проверить изменения. Не уверен, что это самый чистый способ сделать это, но это еще один вариант, который может вам помочь :) – rmuller

0

Вы можете изменить тип входа с ng-attr-type

<input ng-attr-type="{{$ctrl.isNumber? 'number' : 'text'}}"> 

P.S. Я знаю, что он уже закрыт, но я думаю, что его полезно обновить, потому что поиск в Google возвращает эту страницу.

+0

Нельзя привязываться к 'ng-attr-type', так как это не известное свойство 'input' –

Смежные вопросы