2016-08-30 3 views
0

양식 제출시 "기다려주십시오", "성공"또는 "실패"버튼의 텍스트를 변경하는 지시문을 사용하고 있습니다. 사용자가 필드를 변경하면 원래 값으로 복원됩니다.지시문에서 원래 텍스트를 변경 한 후 복원하십시오.

난 그냥, 그것을 잘 작동

$formElement.find("button").text(); 

일반적를 사용하여을 설정하기 전에 원래 값 을 저장하여 그것을했다, 그러나에로 실패

<button>{{(entity.id ? "update" : "create") | translate}}</button> 

같은 변수 버튼 텍스트 내가 평가 된 표현식을 얻는 지점, 즉 번역 된 "update"또는 번역 된 "create"중 하나이지만, 표현식이 필요합니다.

그래서, 나는 지시처음에 그 일을 전환하고 난 괜찮아요

{(entity.id ? "update" : "create") | translate}} 

를 얻을,하지만 난 그것을 어떻게 평가할 수 있습니까? 나는

$parse(buttonText) 

을 시도하지만 괄호를 제거 할 수

angular.js:13236 Error: [$parse:syntax] Syntax Error: Token '{' invalid key at column 2 of the expression [{{(entity.id ? "update" : "create") | translate}}] starting at [{(entity.id ? "update" : "create") | translate}}].

에 리드하지만, Add {{item}} to {{list}} 같은 표현으로 더 복잡 얻을 수 있으므로 깨끗한 방법은 사용을 AngularJS와 무엇을 사용하고 있습니다. 그러나 그것은 무엇입니까?

ng-bind도 처리하고 싶습니다. 따라서 내 지시문이 일반적입니다.

+0

"기다려주십시오"라는 마크 업의 다른 부분에서 모델을 조작하거나 메시지를 표시하는 대신 수동으로 요소를 변경하려고하면 더 어려울 수 있습니다. – dwbartz

+0

@dwbartz 모델을 조작하면 모든 양식의 범위에 무언가를 추가하고 모든 버튼의 텍스트 표현을 그것에 의존하게됩니다. 분명히 더 간단하지만 추악하고 제 지시어를 절반 만 유용하게 만듭니다. 다른 영역도 단순 할뿐만 아니라 반복적입니다. 버튼 자체가 IMHO 완벽한 장소입니다. +++ 나는 적절한 해결책이 복잡하지 않다는 것을 확신하지만, 나는 올바른 서비스를 놓치고있다. – maaartinus

+0

@maartinus 모든 단추를 변경하려면 transclusion을 사용하는 지시문을 만들고 서비스를 통해 추적하는 양식 제출이 진행 중일 때 지시문을 배치하는 단추를 숨 깁니다. – dwbartz

답변

0

전체 문제는 $parse$interpolate입니다. 그래서 해결책은 그것을 복원

var buttonText = button.text(); 
시작 부분에

button.text($interpolate(buttonText)($scope)); 

을하는 것입니다.

관련 문제