因爲我面臨的問題與Android 4.4三星Galaxy TabS有關的<輸入類型=「數字」>它不公開鍵盤上的點鍵(因此防止用戶輸入十進制值),我需要有條件地設置類型=「文本」這樣的設備,我應該怎麼做,因爲以下不起作用?angularjs:具有條件類型屬性的輸入標記?
<input type="{{device.isAndroid?'text':'number'}}">
因爲我面臨的問題與Android 4.4三星Galaxy TabS有關的<輸入類型=「數字」>它不公開鍵盤上的點鍵(因此防止用戶輸入十進制值),我需要有條件地設置類型=「文本」這樣的設備,我應該怎麼做,因爲以下不起作用?angularjs:具有條件類型屬性的輸入標記?
<input type="{{device.isAndroid?'text':'number'}}">
不能動態地改變輸入的類型,所以我會建議硬編碼兩種類型和使用NG-開關或NG-是否顯示一個或另一個具體取決於設備。
例如
<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">
可以改變輸入型與ng-attr-type
<input ng-attr-type="{{$ctrl.isNumber? 'number' : 'text'}}">
P.S.我知道它已經關閉了,但我認爲它的更新很有用,因爲谷歌搜索返回這個頁面
無法綁定到'ng-attr-type',因爲它不是'input'的已知屬性 – 2017-11-28 20:28:59
我想過這個,但懷疑是更好的更輕的方法。指令可能會有幫助嗎? @rmuller – 2014-12-03 10:33:03
檢查編輯。不知道它是否是最乾淨的方法,但它是另一種可能對您有幫助的選項:) – rmuller 2014-12-03 11:14:33