2014-12-16 2 views
3

"App.SelectedBlock"과 같은 코드에서 Ember 객체를 사용하여 목록에서 선택된 항목에 액세스했습니다. 이제는 Sproutcore를 사용했을 때 시작된 연습이되었습니다. 이제이 객체에 대한 바인딩처럼 보입니다. 핸들 바 템플리트는 더 이상 사용되지 않을 것이고이를 수정하는 방법을 모르겠습니다. Ember 1.8.1을 실행 중이며 지금도 작동 할 것입니다.하지만 "삭제 : Handlebars 템플릿에서 App.SelectedBlock의 전역 조회가 사용되지 않습니다." 나는 1.9.0에서 완전히 제거되었다고 확신한다. 완전히 코드를 재구성하지 않고도이 문제를 해결하는 방법을 모르겠습니다. 어떤 제안?Ember에서 전역 데이터 구조에 더 이상 바인드 할 수 있습니까?

+0

당신이 emberjs.jsbin.com에 App.SelectedBlock를 사용하는 방법에 대한 간단한 예를 제공 할 수있는 작업의 예를 참조? 'App.SelectedBlock'은'Ember.Select'를 확장 한 뷰입니까? – Kalman

+0

HB 템플리트에서 {{App.SelectedBlock.id}}를 사용하여보기가 아닌 Ember 데이터 객체 인 App.SelectedBlock에 액세스했습니다. –

답변

4

나는 당신이 좋아하는 smthing하고있는 것 같아요 : 당신은 핸들 바 템플릿 내부 전역 변수를 호출해서는 안

{{App.SelectedBlock.id}} 

. 이것은 나쁜 습관입니다. 그러나이 같은 smthing 수행 할 수 있습니다

// in your template controller 
selectedBlock: function(){ 
    return Ember.get('App.SelectedBlock'); 
}.property('App.SelectedBlock') 

HBS 템플릿에서 :

{{selectedBlock.id}} 
+0

이것은 정확히 내가 한 일입니다. 일부 복잡한 드래그 앤 드롭 상호 작용을 수행하고 선택한 블록과 관련된 측면의 일부 데이터를 업데이트합니다. 내 경험에 의하면 Ember는 드래그 앤 드롭 프레임 워크와 잘 작동하지 않으므로 이와 같은 전역을 사용하여 측면의 데이터를 업데이트하고 변경 사항이 템플릿에 표시되는지 확인해야합니다. 고맙습니다! –

1

당신은 컨트롤러의 속성을 만들고

App = Ember.Application.create(); 

App.ApplicationController = Ember.ObjectController.extend({ 
    programmers: function(){ 
    return App.SelectedBlock.get('programmers'); 
    }.property() 
}); 

App.SelectedBlock = Ember.Object.create({ 
programmers: [ 
    {firstName: "Yehuda", id: 1}, 
    {firstName: "Tom", id: 2} 
] 
}); 
것을를 사용하는 대신 전 세계적으로 App.SelectedBlock을 찾고 있습니다

템플릿에서 다음을 수행 할 수 있습니다.

,210
<script type="text/x-handlebars"> 
    <h2>Welcome to Ember.js</h2> 

    {{view "select" 
    content=programmers 
    optionValuePath="content.id" 
    optionLabelPath="content.firstName"}} 
</script> 

here

+0

그래,이 코드는 다른 코드와 거의 동일하지만 코드가 좀 더 완전하고 다른 사람들이 이해하기 쉽습니다. –

관련 문제