2012-02-14 6 views
1

Backbone Boilerplateを使用してアプリケーションを構築していますが、アンダースコアテンプレート変数を使用するには問題があります。 Goalというリソースがあります。私はそうのように、他のビューの内側にそれを呼んでいるバックボーンボイラープレートでアンダースコア変数を使用するfetchTemplate関数

render: function(done) { 
    var view = this; 

    namespace.fetchTemplate(this.template, function(tmpl) { 
    view.el.innerHTML = tmpl(); 
    done(view.el); 
    }); 
} 

var Goal = namespace.module("goal"); 

App.View = Backbone.View.extend({ 

    addGoal: function(done) { 

    var view = new Goal.Views.GoalList({model: Goal.Model}); 

    view.render(function(el) { 
     $('#goal-list').append(el); 
    }); 
    } 
}); 

私は私のデータを保存するために、ローカルストレージを使用していて、それがされています私の目標のビューの機能は次のようになり、レンダリングうまくいった。私は、ブラウザでそれを見ることができますが、私はアプリをロードし、既存のデータをフェッチしようとするいくつかの理由で、私はこのエラーを取得:

タイトルは私が保管しています唯一の鍵である
ReferenceError: Can't find variable: title 

。電話の直接の結果です。

tmpl(); 

ご意見をいただければ幸いです。

+0

コードのどこかに変数 'title'がある必要があります。エラーメッセージに関連付けられている行番号はありませんか? – Thilo

答えて

2

あなたのテンプレートは変数titleを探しています(<%- title %>のようなものでしょう)。あなたはこのようなオブジェクトを渡す必要がありますtmpl({ title: 'Some title' })

0

私は、モデルデータを取得することが不可能になっていたビューを作成したときにモデルを渡していませんでした。いったんモデルを正しく渡すと、@ abrahamが正しく述べたように、データをtmplに渡すことができました。

render: function(done) { 
    var 
    view = this, 
    data = this.model.toJSON(); 

    clam.fetchTemplate(this.template, function(tmpl) { 

    view.el.innerHTML = tmpl(data); 

    done(view.el); 
    }); 
}, 
関連する問題