0

私はICanHazの大ファンであり、作成中の新しいMarionetteアプリケーションに直接統合しようとしています。ただし、この投稿から離れて、renderメソッドに到達し、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();

    });

この関数をウォークスルーすると、すべてのデータが正常に機能しているように見えます。ただし、使用してレイアウトやアイテムビューに使用しようとすると、何も追加または挿入されません。これは私の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" : "nweingartner@awesome.com",
          "tenant" : "Ginger Ale is Great"
        });

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

これはすべて、インデックスがヒットしたときに呼び出されるメソッドで発生します。JSエラーはないので、何もする必要はありません。ただし、レンダリング関数でデータを本文に追加すると、追加されます(ただし、レイアウトと領域構造が台無しになります)。

テンプレートをindex.htmlに保存しています。

誰かがこれを手伝うことができますか?

4

1 に答える 1

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」であるということです。それ以外の点では、非常によく似た動作をします。

これが他の誰かに役立つことを願っています。

于 2013-03-27T12:40:35.203 に答える