9

テンプレートで評価されるモデル オブジェクトを渡そうとしましたが、うまくいきませんでした。次のことを試しましたが、うまくいきませんでした

ダッシュボードmodel.js

var myMod = Backbone.Model.extend({
   defaults: {
     name: "mo",
     age: "10"
   }
});

myview.js

         var dashView = Backbone.View.extend({

         el: '.content-area',

         this.mymodel = new myMod({}), 

         template: _.template(dashBoardTemplate, this.mymodel),
         initialize: function() {
                    },

                    render: function() {
                        this.$el.html(this.template);
                        return this;
                    }

// more javascript code.............

dahboard.html

<p> Hello <%= name %> </p>

PS: アンダースコア テンプレート エンジンを使用しています

4

2 に答える 2

3

getter 構文を使用してバックボーン モデルのプロパティを取得する必要があるため、テンプレートを次のように書き直す必要があります。

<p> Hello <%= obj.get('name') %> </p>

または、 (モデルのクローンを作成する) またはプロパティ_.templateで実行できることを呼び出すときに、モデルをプレーンな JS オブジェクトに変換する必要があります。.toJSON().attributes

template: _.template(dashBoardTemplate, this.mymodel.toJSON())

補足: テンプレート レンダリング ロジックをビューに移動することを検討する必要があります。現在のコードは、メソッドを呼び出したときではなく、ビューが宣言されたときにテンプレートをレンダリングするためですrender。そのため、予期しない結果が得られる可能性があります。したがって、コードは次のようになります。

template: _.template(dashBoardTemplate), //only compile the template
render: function() {
    this.$el.html(this.template(this.mymodel.toJSON()));
    return this;
}
于 2013-10-26T17:41:11.673 に答える