2014-01-09 50 views
2

我創造了一個AngularJs指令。 指令將接收來自應用控制器JSON對象,並基於該指令將顯示內容。AngularJS - 禁用浮動過濾

我做了基於我的問題,一個簡單的演示,可以在這裏找到:http://jsfiddle.net/darkyndy/6StLm/

現在我的JSON看起來像: ctrlItemJson = { myk: "something", state: { step: 1.0 } };

爲什麼指令鏈路,控制器和視圖,當我訪問state.step我得到而不是1.0

設置值爲字符串'1.0'它的工作原理,但對我來說,我需要與控制器發送的方式完全相同。

後來編輯: 這主要是由JavaScript作爲如果你嘗試 var a = 1.0,然後嘗試console.log(a)你會看到1

在這種情況下我的問題,我將與API人商量將字符串發送...

解決方案

如果你無法控制值:

對於要保留小數點的位置(小數點爲零,例如:1.0,2.00),而不是使用浮點數,然後使用字符串(例如:'1.0','2.00')。

2.如果你能控制和精確知道(指令將決定精度):

然後檢查響應了這個問題。 示例:http://jsfiddle.net/SE5s3/

回答

0

這不是AngularJS相關的東西,而是JavaScript。例如,

var a = 2.0; 

實際上只是2

您還可以,如果你想你的號碼給特定小數使用角數過濾:

template: '<input type="text" value="{{dyItemJson.state.step | number:2}}"/>', 
+0

是的,你是正確的,主要來自JS。 您的解決方案可以爲別人打工,但對我來說不一樣,我得到的是JSON從API和我「盲」,意思是我不知道,如果值爲'1.0'或'1.00'或'1' :) – darkyndy

1

您可以指定某個使用.toPrecision(x),其中x是你想要的精度浮點精度在JavaScript中。

這裏有一個版本的的jsfiddle的實現這一點:http://jsfiddle.net/SE5s3/

具體代碼我改變:

<input type="text" value="{{dyItemJson.state.step.toPrecision(2)}}"/>

+0

對於我來說,我不能這樣做,因爲值是從API檢索和我「盲」,意思是我不知道,如果值爲'1.0'或'1.00'或'1' :) 所以硬編碼精度不起作用。 – darkyndy

+0

在這種情況下,您必須以字符串形式獲取值。您可以隨後統計字符串中需要多少小數。 –