2014-12-03 65 views
0

因爲我面臨的問題與Android 4.4三星Galaxy TabS有關的<輸入類型=「數字」>它不公開鍵盤上的點鍵(因此防止用戶輸入十進制值),我需要有條件地設置類型=「文本」這樣的設備,我應該怎麼做,因爲以下不起作用?angularjs:具有條件類型屬性的輸入標記?

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

回答

1

不能動態地改變輸入的類型,所以我會建議硬編碼兩種類型和使用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"> 
+0

我想過這個,但懷疑是更好的更輕的方法。指令可能會有幫助嗎? @rmuller – 2014-12-03 10:33:03

+0

檢查編輯。不知道它是否是最乾淨的方法,但它是另一種可能對您有幫助的選項:) – rmuller 2014-12-03 11:14:33

0

可以改變輸入型與ng-attr-type

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

P.S.我知道它已經關閉了,但我認爲它的更新很有用,因爲谷歌搜索返回這個頁面

+0

無法綁定到'ng-attr-type',因爲它不是'input'的已知屬性 – 2017-11-28 20:28:59

相關問題