2016-07-22 7 views
1

私のページでは、ページのコントローラから変数を使用しています。例:ionic + number with variable numberは常に '有効な数字ではありません'

<label class="item item-input item-stacked-label"> 
    <span class="input-label">Projekt Id:</span> 
    <input type="number" placeholder="0" value="{{cpc.projektid}}" disabled> 
</label> 

コントローラは工場で計算し、SQLiteデータベースからデータを取得します。私は、コントローラ内や工場内の私の変数の型をチェックした場合、私は例のために得る:

console.log(typeof cpcVm.projektid); => number 
console.log(angular.isNumber(cpcVm.projektid)); 0> true 

だから、私にとっては、これは、変数の値が数値であることを、意味します!

指定された値 "{{cpc.projektid}}" 有効な数値ではありません。

は、しかし、私は常に警告が表示されます。 ?(?[EE] [ - +] \ D +)?については、」

(。。| | \ D + \ D + \ D + \ D +) - : 値は、次の正規表現に一致している必要がありますprojektid、これは大きな問題ではありませんが、私はもっと複雑な計算を持っている、と私はまた、数が数である場合にのみ動作するいくつかのフィルタを設定する必要はあり例えば:。

<input type="number" placeholder="0" value="{{cpc.luftmenge | number:2}}" disabled> 

私は追加を与えることをすでに試みました私のコントローラと工場ではparseFloat()ですが、変更はありませんコントローラと工場は数値だと言っていますが、HTMLではエラーが発生し、フィルタを使用できません。

もう1つの変わったこと:工場やコントローラで変数の値を手動で設定すると(例えば、12を返した場合)、それは動作します。

アイデア?

答えて

3

value属性の代わりにng-value="cpc.projektid"を使用してください。

Angularがページにロードされない限り、valueのブラウザに表示されるブラウザは{{cpc.projektid}}なので、それは不平を言っています。 ng-valuevalue属性は、式が正しくコンパイルされた後にのみ追加されるようにしてください。

var app = angular.module("sa", []); 
 

 
app.controller("FooController", function($scope) { 
 

 
    $scope.projektid = "2" 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script> 
 

 
<div ng-app="sa" ng-controller="FooController"> 
 
    Projekt Id: 
 
    <input type="number" placeholder="0" ng-value="projektid" disabled> 
 
</div>

+0

ありがとう!!!これは私の問題を解決しました。私は手動の価値を与えたときになぜそれが働いたのか分かりません。たぶんそれは計算で私は他の変数を使用するためでしたか?私は完全なコードをng-value = ""に変更し、parseFloat()を削除しました。私のテストでは、すべてがうまくいくように見えます... – cjs1976

+0

これはうまくいきました!あなたが 'value =" {{}} "を使用していたときの回答で言及したように、Angularが初期化されなくなるまで、秒単位で、またはブラウザが' {{cpc.projektid}} ' DOMの中で。 Angularが出現すると、ブラウザは評価された式{{cpc.projektid}}の後に実際の値を取得します。 'src'と' ng-src'属性でも同じです。 –

+0

ああ、知っておいてよかった。再度、感謝します! – cjs1976

関連する問題