2014-03-03 6 views
0

엠버에서 {{render}}를 사용하여 메뉴를 작동 시키려고합니다.앰버 렌더링/ArrayController

컨트롤러 : 그럼 다음 문장 템플릿을 사용하여 렌더링 {{render "navigation"}}를 사용

App.NavigationController = Ember.ArrayController.extend({ 
    itemController: 'navSheet', 
    init: function() { 
     this._super(); 
     this.set('content', [ 
      { name: 'Sheet 1', type: 'Sheet', id: 1 }, 
      { name: 'Sheet 2', type: 'Sheet', id: 2 } 
     ]); 
    }  
}); 

App.NavSheetController = Ember.ObjectController.extend({ 
    getID: function() { 
     return 'sheet-' + this.get('id'); 
    } 
}); 

: 여기에 "controller.content"으로

ul 
    each controller.content 
    li data-type=type! id=getID! = name 

[출력 UPDATE]

를 I 콘텐츠를 반복하십시오. "each"를 사용하면이 기능을 사용할 수 없습니다. 그러나 어떤 경우에도 itemController는 루프 내부의 컨텍스트에 있지 않습니다. 결과 HTML은 다음과 같습니다.

<li data-type="Sheet" id=""> 
    <script id="metamorph-8-start" type="text/x-placeholder"></script>Sheet 1 
    <script id="metamorph-8-end" type="text/x-placeholder"></script></li> 
<li data-type="Sheet" id=""> 
    <script id="metamorph-9-start" type="text/x-placeholder"></script>Sheet 2 
    <script id="metamorph-9-end" type="text/x-placeholder"></script></li> 

특히 "getID"값이 표시되지 않습니다. 사실 itemController에 전혀 액세스 할 수없는 것 같습니다. 내가 도대체 ​​뭘 잘못하고있는 겁니까?

+0

왜 객체 컨트롤러의 내용을 덮어 쓸 수 있어야하기 때문에

이제 getID가 실행되지 않습니다? 내용은 배열 컨트롤러의 각 항목이어야합니다. – Kingpin2k

+0

이것은 서브 컨텐츠입니다. 중첩 된 항목 세트를 렌더링하려고 할 때 각 서브 아이템의 컨텐츠입니다. 그러나 현재 버전에서는 여러 가지를 시도하면서 엉망입니다. (이전에는 ArrayController가있었습니다.) 그러나 항목 컨트롤러는 전혀 사용할 수없는 것 같습니다. ... – shaunc

+0

[이제 "하위 컨텐츠"를 삭제하기 위해 편집 됨 ... – shaunc

답변

0

필자는 엠블렘을 전혀 사용하지 않았기 때문에 템플릿을 완전히 이해하지 못했지만 제대로 이해하면 li에 sheetId를 가져오고 getID 함수를 사용하여이 작업을 수행하고 있습니다. 나는 상징이 템플릿

<li {{bind-attr data-type=type dataid=getID}}> 

로 변환 것이라고 추측거야하지만 그런 getID!=name 또는 뭔가를하고있는 것처럼도 보인다. 그런 종류의 논리는 핸들 바에서 작동하지 않습니다. 이 계산 된 특성

App.NavSheetController = Ember.ObjectController.extend({ 
    getID: function() { 
     return 'sheet-' + this.get('id'); 
    }.property('id') 
}); 
+0

"getID!" 구문은 엠블렘 문서에서옵니다 : http://emblemjs.com/syntax/#html-attributes ... 'id = {{unbound foo}'로 변환해야합니다. 엠블렘은 "언 바운드를 사용해야합니다"라고 말합니다. 이유는 모르겠다. 그러나 요점은 NavSheet 컨트롤러가 존재하지 않는다는 것입니다. 정적 속성을 넣어도 사용할 수 없습니다. – shaunc