2012-08-16 2 views
2

버튼을 제출 한 후 Ember.TextField에서 입력 값을 가져 오는 가장 좋은 해결책은 무엇입니까?Ember.js 앱에서 입력 값을 얻는 방법은 무엇입니까?

메시지를 보내는 간단한 앱이 있다고 가정합니다.

<script type="text/x-handlebars" data-template-name="text"> 
    <h1>Send the message:</h1> 
    <div class="send_form"> 
     {{view Ember.TextField}} 
     <button type="submit">Done</button> 
    </div> 
</script> 

는 기본적으로, 나는 한 가지가 필요합니다

App.TextView = Ember.View.extend({ 
    templateName: 'text', 

    submit: function(event) { 
     console.log(event); 
    } 
}); 

그런 다음,이 뷰의 핸들 바 템플릿이 : 나는 사용자가 자신의 메시지를 입력 입력 양식을 나타내는 뷰를 지정했습니다. 사용자가 버튼을 클릭하면 알림을 받아야합니다 (제출 기능 또는 내 앱의 다른 곳). TextField에서 값을 가져와야합니다. 어떻게하면 될까요?

답변

9

예를 들어 텍스트 필드의 값을보기의 메시지 속성에 바인딩 할 수 있습니다.

아마도 다른 해결책이있다,하지만 난이 매우 간단 생각 : http://jsfiddle.net/Sly7/vfaF3/

<script type="text/x-handlebars"> 
    {{view App.TextView}} 
</script> 

<script type="text/x-handlebars" data-template-name="text"> 
    <h1>Send the message:</h1> 
    <div class="send_form"> 
    {{view Ember.TextField value=view.message}} 
    <button type="submit" {{action "submit" target=view}}>Done</button> 
    </div> 
</script>​ 
App = Ember.Application.create({}); 

App.TextView = Ember.View.extend({ 
    templateName: 'text', 
    message: '', 

    actions: { 
    submit: function(event) { 
     console.log(this.get('message')); 
    } 
    } 
}); 
+0

감사합니다. 그러나 내 응용 프로그램이 라우터를 사용하고 작업이 현재 라우터 상태로 리디렉션되기 때문에 예제가 작동하지 않습니다. 어떻게 처리 할 수 ​​있습니까? –

+1

아, 그게'target = "view"'가 해결할 것 같습니다 ... 고마워, 친구! –

+0

죄송합니다, 나는 이것을 예상하지 못했습니다;) –

관련 문제