2012-06-20 3 views
1

ember-0.9.8.1.js로 몇 가지 테스트를했으며 다음 코드가 예상대로 작동합니다. 그 후 나는 라우터에 대해 읽었고 라우터 코드는 현재 ember-latest.js (16.06.2012)에서만 사용 가능하다는 것을 알았습니다. 아래 코드를이 버전으로 테스트합니다.현재 ember-latest에서 CollectionView 오류가 발생 했습니까?

<div id="ember143" class="ember-view"> 
    <ul id="PersonList" class="ember-view ListBox"> 
     <li id="ember179" class="ember-view"> 
     <script id="metamorph-0-start" type="text/x-placeholder"></script> 
     <script id="metamorph-0-end" type="text/x-placeholder"></script> 
     </li> 
     <li id="ember183" class="ember-view"> 
     <script id="metamorph-1-start" type="text/x-placeholder"></script> 
     <script id="metamorph-1-end" type="text/x-placeholder"></script> 
     </li> 
     <li id="ember187" class="ember-view"> 
     <script id="metamorph-2-start" type="text/x-placeholder"></script> 
     <script id="metamorph-2-end" type="text/x-placeholder"></script> 
     </li> 
     <li id="ember191" class="ember-view"> 
     <script id="metamorph-3-start" type="text/x-placeholder"></script> 
     <script id="metamorph-3-end" type="text/x-placeholder"></script> 
     </li> 
     </ul> 
    </div> 

하지만 비어 : 문제는리스트가 렌더링입니다.

템플릿 뭔가 : Ember.Handlebars.compile ("{{content.name}}"),

이 제대로 작동하지 않거나 일부 구문 측면이 변경되었습니다.

코드 라인

을 console.log ("내용", 썩 ('내용')); 올바른 콘텐츠가 있음을 클릭 처리기 쇼에서

,하지만

Ember.Handlebars.compile ("{{content.name}}"),

콘텐츠를 렌더링하지 않습니다.

버그입니까?

자바 스크립트 코드 :

var App = Em.Application.create({ 

    ready: function(){ 
     App.personListController.getData(); 
    } 
    }); 


    // Model Objects 

    App.Person = Ember.Object.extend({ 
     name: null, 
     myTickets: null, 
     selected: false 
    }); 


    // Liste von Personen anlegen 

    App.personListController = Ember.ArrayController.create({ 

    getData: function(){ 

     $.get('json/person.json', function(data) { 
      var personList = Ember.A([]); 
      data.forEach(function(item) { 
       var p = App.Person.create({ 
        'name': item.name, 
        'myTickets': null, 
        'selected': false 
       }); 
       personList.pushObject(p); 
      }); 
      App.personListController.set('content', personList); 
     }) 
    }, 
    resetSelection: function(){ 
     App.personListController.content.forEach(function(item){ 
      item.set('selected',false); 
     }) 
    }, 
    selectedPerson: null 
    }); 


    App.PersonList = Ember.CollectionView.extend({ 
     tagName: 'ul', 
     contentBinding: 'App.personListController.content', 
     classNames: ['ListBox'], 
     mouseenter: function(event){ 
     console.log("PersonList.content:",this.get('content')); 
     }, 

    itemViewClass: Ember.View.extend({ 
     template: Ember.Handlebars.compile("{{content.name}}"), 
     classNameBindings: ['selected:selected'], 
     selectedBinding: 'content.selected', 
     click: 
      function(event){ 
       App.personListController.resetSelection() ; 
       this.setPath('content.selected',true); 
       App.personListController.set('selectedPerson',this.get('content')); 
       console.log("ItemViewInfo selected:",this.getPath('content.selected')); 
       console.log("content:",this.get('content')); 
       //this.set('isSelected',true); 
      } 
     }) 
    }); 

HTML :

view에 대한 조회 컨텍스트 최신 커밋에 변경하기 때문입니다
<script type="text/x-handlebars"> 
    {{#view App.PersonList id="PersonList"}} 

    {{/view}} 
</script> 

답변

2

. view에서 속성을 검색하려면 앞에 view을 추가해야합니다. 커밋 8a6c6의 설명서 업데이트를 참조하십시오.

템플릿 따라서

template: Ember.Handlebars.compile("{{view.content.name}}") 

http://jsfiddle.net/pangratz666/DsdHU/가 참조로 변경한다.

톰 데일 (Tom Dale)은 Gist으로 변경 사항을 자세히 설명합니다.

0

최신 ember.js (또는 ember-1.0.pre.js)에는 핸들 바가 더 이상 포함되지 않으므로 직접 포함해야합니다.

당신도 지금 이벤트 루프를 시작해야합니다 : !! -> 더 이상 필요 없다고 생각합니다. !!

App.initialize(); 

용맹 한 관련 jsfiddle : http://jsfiddle.net/aGMzD/