2013-03-26 3 views
0

저는 ICanHaz의 팬입니다. 저는 건물에있는 새로운 Marionette 응용 프로그램에 직접 intregrate하려고합니다. 나는이 기능을 통해 걸 으면iCanHaz와 Marionette을 통합합니다.

// Set up Initalizer 
    APP.addInitializer(function() { 

     //Reach into Marionette and switch out templating system to ICH 
     Backbone.Marionette.Renderer.render = function(template, data){ 
      return ich[template](data); 
     } 

     //Create Router 
     new APP.Routers.GlobalRouter(); 

     //Start Backbone History 
     Backbone.history.start(); 

    }); 

, 모든 데이터가 잘 작동하는 것 같다 그러나, this post 떨어져 가고, 나는 렌더링 방법에 도달 마리오네트에 변경이이 작성했습니다. 그러나 레이아웃을 사용하거나 항목보기에 사용할 때 아무 것도 추가되거나 삽입되지 않습니다. 이것은 내 GlobalRouter에서입니다 :

//Grab the main Layout 
     var layout = new APP.Views.LayoutView(); 

     //Render that layout 
     layout.render(); 


     //Make the model 
     var userModel = new APP.Models.UserModel({ 
      "user_name" : "[email protected]", 
      "tenant" : "Ginger Ale is Great" 
     }); 

     //Make the Header Region 
     var headerRegion = new APP.Views.HeaderView({model: userModel}); 
     layout.header.show(headerRegion); 

이 모든 인덱스가 공격 할 때 호출되는 방법에 발생합니다. JS 오류가 없으므로 계속 진행할 필요가 없습니다. 그러나 렌더링 함수에서 데이터를 본문에 추가하면 추가됩니다 (그러나 레이아웃과 영역 구조가 손상됨).

나는 내 템플릿을 index.html에 저장하고 있습니다.

아무도 도와 드릴 수 있습니까?

답변

1

좋아, ICH를 사용하여이 작업을 수행하는 쉬운 방법을 찾지 못했습니다. 그러나, 내가 발견 한 또 다른 SO로 인해, 매우 유사한 기능이 단지 Mustache를 사용하여 발견 될 수 있습니다.

Backbone.Marionette.TemplateCache.prototype.compileTemplate = function(rawTemplate) { 
    return Mustache.compile(rawTemplate); 
} 

당신이 마리오네트의 템플릿 호출을 사용하여 index.html을에서 콧수염 템플릿을 뽑을 수 있도록하는 렌더링을 변경할 수 있습니다 :

이 코드를 사용하여. 콧수염 템플리트는 다음과 같습니다.

<script id="headerTemplate" type="text/template"> 
     <p>{{user_name}}</p> 
     <p>{{tenant}}</p> 
    </script> 

차이점은 유형이 'text/html'과 반대되는 'text/template'입니다. 그렇지 않으면 매우 유사하게 작동합니다.

다른 사람에게 도움이되기를 바랍니다.