2012-03-15 4 views
1

핸들 막대 템플릿에서 하위보기에 CSS 클래스를 추가하고 싶습니다. 이동 클래스 이름 속성에 대한 특별한 무언가가 http://jsfiddle.net/sohara/PKMTn/2/핸들 막대 템플릿에서 자식보기에 CSS 클래스를 추가하는 방법

있습니까 :

App = Ember.Application.create() 

App.ParentView = Ember.View.extend({ 
    foo: 'bar', 
    content: 'Hello', 
    ChildView: Ember.View.extend({ 
     classNames: this.get('parentView').get('classesToAdd') 
    }) 
}); 

나는 여기 jsfiddle을 다음과 같이

Uncaught TypeError: Object [object DOMWindow] has no method 'get' 

내 코드는 다음과 같이 저는 현재 오류를 얻고있다 Ember.View에서 DOM 요소로의 컨텍스트? 아니면 이것을 달성 할 수있는 다른 방법이 있을까요?

답변

2

당신은 http://jsfiddle.net/WCjda/1/

핸들 바, classesToAdd에 액세스 할 뷰에 init을 덮어 볼 수 있습니다

<script type="text/x-handlebars"> 
    {{#view App.ParentView}} 
     {{#view ChildView classesToAdd="my-class"}} 
      hello   
     {{/view}} 
    {{/view}} 
</script>​ 

자바 스크립트 :

App = Ember.Application.create() 

App.ParentView = Ember.View.extend({ 
    foo: 'bar', 
    content: 'Hello', 
    ChildView: Ember.View.extend({ 
     init: function() { 
      this._super(); 
      var classes = this.get('classesToAdd'); 
      this.set('classNames', Ember.makeArray(classes)); 
     } 
    }) 
});​ 
+0

감사합니다. 이것은 기본적으로 내가 성취하려는 것입니다. 나는 핸들 바 템플릿을 말리고 싶었어. 다음은 더 건조한 jsfiddle입니다. http://jsfiddle.net/sohara/WCjda/3/ - 템플릿에서 childView를 선언 할 필요가 없습니다. 한 가지주의 할 점은 나중에 CSS 선택기를 더 창의적으로 사용하여 동일한 효과를 얻을 수 있음을 깨달았습니다. (단지 parentView에 클래스를 선언하고 div.my-class div {# ... css 속성}의 선을 따라 셀렉터를 만든다. 그러나 이것은 나의 css 클리너를 유지한다 . –

+1

한 가지주의 할 점은 다음과 같다. 정규 ember-view 클래스가 클래스 이름 배열에 추가되지 않기 때문에 자식 뷰에 대한 이벤트 처리가 중단되지만 배열은 대체됩니다. 다음은 가능한 해결 방법으로 업데이트 된 바이올린입니다. http://jsfiddle.net/sohara/ WCjda/4/다음은이 문제에 대한 자세한 설명입니다. https://github.com/emberjs/ember.js/issues/490 –

0

보기 개체가 인스턴스화되지 않았기 때문에 classNames ChildView 선언에 this을 사용할 수 없다고 생각합니다.

그러나 바인딩을 사용할 수 있습니다. Emberjs.com의 "HTML 요소 사용자 정의"절의 설명서를 참조하십시오.

+0

가 실제로 먼저 시도했다. classNamesBinding을 설정했고 또 다른 오류가 발생했습니다. –

관련 문제