2014-03-30 1 views
1

나는 (레일이없는) emberJS를 사용하고 템플릿의 다른 파일에 템플릿을 가지고있다./*. hbsEmber.Handlebars.compile 이후보기를 업데이트하는 방법?

나는 그들을 쿼리하고 템플릿을 컴파일하기 위해 ajax를 사용했다.

App.SetupTemplate = function(name) {    
      $.ajax({url:"templates/"+name+".hbs", success: function(response) { 
      Ember.TEMPLATES[name] = Ember.Handlebars.compile(response);   
    } });                   
    };                   


    App.ProfileRoute = Ember.Route.extend({          
      setupController: function(controller) { App.SetupTemplate('profile'); 
    },                   
    });   

내가 ProfileRoute를 누르면 해당 템플릿이 컴파일되지만보기에는 자동으로 업데이트되지 않습니다. 그러나 템플릿이 이미 컴파일되어 있고보기가 올바르게 렌더링되어 있으므로 동일한 경로에서 나중에 클릭 할 때 작동합니다. transitionTo를 동일한 경로로 사용하는 방법을 알지 못합니다.

첫 번째 클릭 자체에서 자동으로보기를 업데이트하려면 어떻게해야합니까?

- 고맙습니다.

답변

1
템플릿이 실제로
App.needsTemplate = function(name){ 
    return Ember.isEmpty(Ember.TEMPLATES[name]); 
}; 
App.setupTemplate = function(name) { 
    return new Ember.RSVP.Promise(function(resolve, reject){ 

     if(!App.needsTemplate(name)){ 
     resolve(); 
     } else { 
     $.ajax({url:"templates/"+name+".hbs"}).then(function(response){ 
      Ember.TEMPLATES[name] = Ember.Handlebars.compile(response); 

      resolve(); 
     }); 
     }                       
    }); 
}; 


App.IndexRoute = Ember.Route.extend({ 
    model: function() { 
    return ['red', 'yellow', 'blue']; 
    }, 
    afterModel: function(model, transition){ 
    if(App.needsTemplate('index')){ 
     transition.abort(); 
     App.setupTemplate('index').then(function(){ 
     transition.retry(); 
     }); 
    } 
    } 
}); 
, 덕분에 작동

http://emberjs.jsbin.com/OxIDiVU/340/edit

+0

을 다운로드 할 때까지 당신은 전환을 차단해야 것

. 또한 기초 5 CSS를 사용합니다. 이전 코드에서는 JS "$ (document) .foundation();을 초기화했습니다. 템플릿이 추가되고 CSS가 작동 한 후에도 작동하지 않습니다. :(초기화하는 데 적절한 위치입니까? – Shanthakumar

+0

기초가 작동하는 방식에 따라 새로운 요소가있을 때마다이를 실행해야하기 때문에 까다 롭습니다. – Kingpin2k

+0

네, 모든 뷰에서 didInsertElement를 정의했고 작동합니다. 'AppProfileView = Ember.View.extend ({didInsertElement : function {) {$ (document) .foundation();} });' – Shanthakumar

관련 문제