2014-01-09 2 views
2

AngularJs에서 지시문을 만듭니다. Directive는 app 컨트롤러에서 JSON 객체를 수신하고이를 기반으로 지시문에 내용을 표시합니다. AngularJS - 플로트 필터링 사용 안 함

나는에서 찾을 수 있습니다 내 문제를 기반으로 간단한 데모를했다 : http://jsfiddle.net/darkyndy/6StLm/

이제 내 JSON 보이는 뭔가 같은 : ctrlItemJson = { myk: "something", state: { step: 1.0 } };

왜 지시어 링크에서, 컨트롤러와 난보기 액세스 state.step대신 대신이 있습니까?

값을 문자열 '1.0'으로 설정하면 작동하지만 나에게 정확히 컨트롤러에서 보낸 방법과 동일해야합니다. 당신은 내가 문자열을 보내 API들과 논의 할 것이다 나의 문제에 대한이 경우 1

을 볼 수 console.log(a)을 시도하십시오 var a = 1.0 등을 시도하는 경우로이 자바 스크립트에서 주로 ...

:

나중에 편집

솔루션 :

1. 경우이 값을 제어 할 수 없습니다 :

float를 사용하는 대신 소수 자릿수를 유지하려는 곳에 (예 : 1.0, 2.00) 문자열을 사용하십시오 (예 : '1.0', '2.00').

2 경우 당신은 (지시어는 정밀도를 결정한다) 제어 정밀도를 알 수 있습니다 :

그런 다음이 질문에 대한 응답을 확인합니다. 예 : http://jsfiddle.net/SE5s3/

답변

0

이것은 AngularJS와 관련이 없지만 JavaScript입니다.

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

예, 당신은 그 JS에서 주로 맞다

다음은이를 구현하여 jsfiddle의 버전입니다. 당신의 솔루션은 다른 사람들에게도 도움이 될지 모르겠지만 제게는 API에서 JSON을 얻지 못했고 값이 '1.0'인지 '1.00'인지 또는'blind '인지 알지 못합니다. '1' :) – darkyndy

1

당신은 어떤을 지정할 수 있습니다 : 예를 들어,

var a = 2.0; 

는 특정 소수 자릿수에 숫자를 원하는 경우 단지 2

또한 각도의 숫자 필터를 사용하여 실제로 .toPrecision(x)을 사용하여 JavaScript의 부동 소수점 정밀도, 여기서 x은 원하는 정밀도입니다. 내가 변경 http://jsfiddle.net/SE5s3/

특정 코드 :

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

+0

내 경우에 API에서 값을 가져오고 값이 '1.0'또는 '1.00' 또는'1 '인지 모르는 "blind"입니다. :) 그래서 하드 코딩 정밀도가 작동하지 않습니다. – darkyndy

+0

이 경우 값을 문자열로 가져와야합니다. 나중에 문자열에서 필요한 소수 자릿수를 항상 계산할 수 있습니다. –