2017-04-14 14 views
-1

<div> <input type="text" ng-model="test"/> </div>NG-模型值始終是字符串類型,即使輸入的值是多少

「測試」值始終是字符串類型,即使進入了一個數字,是有效的情況下。 但我仍然想要得到它的確切數據類型。

任何人都可以給我建議的方式來找到它的數據類型,如果輸入值是數字則數據類型應該是「數字」,如果輸入值是「ABC」的數據類型應該是「字符串」等

簡而言之,使用相同的HTML紋理,並獲得輸入值的數據類型

+0

基於下面給出的答案的評論,我猜你想保持對控制器的類型檢查?你想保持輸入類型爲動態的,以便你可以使用'type =「text」'但仍然將該值視爲一個數字? – jusopi

回答

2

您將不得不發佈一些代碼來舉例,否則很難給出答案。我懷疑這是因爲html不好,即

<input type="text" /> 

上面會返回'string'。

<input type="number" /> 

上面將返回一個'數字'。你的代碼設置是否正確?

編輯:如果你只是簡單地把'type'(壞HTML)放在你的控制器中,你可以檢查你的數據在按摩時的類型。 (例如使用lodash)這兩個示例:

if (_.isString(value)) { } 
if (_.isNumber(value)) { } 

或者使用原生javascript,只需使用'typeof'即可。

另一個想法是,如果您只有type =「text」的選擇,那麼在您的控制器中,您可以在傳入字符串上使用RegEx,專門查找數字。

if (value.match(/^\d+$/)) { 
    // This should be a 'number'; 
} 
+0

我的問題很簡單,它是一個文本字段,我知道,現在我已經在這個文本字段中輸入了一些值,並且輸入的值可以是任何類似字符串或數字或十進制值的任何數字 。 我需要一種方法來找出輸入值的數據類型,而不是關心它是什麼樣的輸入類型字段。 希望得到您的肯定回答。 –

+0

@KusumKushwaha您能否詳細說明您的答案,並展示一些您的代碼?事情是你的代碼的目的是什麼?你想用它做什麼?你需要驗證輸入或其他東西嗎?可能是解決特定問題的方法可以變得更高效。 –

+0

是的,這就是爲什麼輸入標籤具有'type'屬性(即type =「text」,type =「number」等) – rrd

0

您必須創建自己的函數來測試它(除非您已經使用具有類似函數的函數庫)。

舉例來說,你可以做這樣的:

function isNumber(string) { 
 
    var float = parseFloat(string); 
 

 
    return !isNaN(float) && float.toString().length === string.length; 
 
} 
 

 
console.log(isNumber('365'));   // true 
 
console.log(angular.isNumber('365')); // false 
 
console.log(typeof '365');    // string 
 
console.log(typeof parseFloat('365')); // number 
 
console.log(isNaN(parseFloat('365'))); // false 
 

 
console.log(isNumber('365 days in a year'));   // false 
 
console.log(angular.isNumber('365 days in a year')); // false 
 
console.log(typeof '365 days in a year');    // string 
 
console.log(typeof parseFloat('365 days in a year')); // number 
 
console.log(isNaN(parseFloat('365 days in a year'))); // false 
 

 
console.log(isNumber('There are 365 days in a year'));   // false 
 
console.log(angular.isNumber('There are 365 days in a year')); // false 
 
console.log(typeof 'There are 365 days in a year');    // string 
 
console.log(typeof parseFloat('There are 365 days in a year')); // number 
 
console.log(isNaN(parseFloat('There are 365 days in a year'))); // true
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>

編輯: 我創建了一個簡單的函數,測試它是否是一個數字,我不使用angular.isNumber

+0

$ scope.getDataType()= function(value){$ scope.dataType = null; if(angular.isString(value)){$ scope.dataType =「String」} if(angular.isNumber(value)){$ scope.dataType =「Number」}};當我調試我的代碼時,我發現在我輸入數字的情況下,值爲「123」,如果我在文本字段中輸入字符串,則值爲「abc」。所以我的第一個條件將永遠是真實的,它永遠不會進入第二個條件。 請嘗試改進此代碼, 這將是很大的幫助。 –

+0

我沒有使用'angular.isNumber',爲了清晰添加它 – Pjetr

+0

感謝您的回答,您的回答幫助我解決了我的問題。 –

相關問題