鈍足ランナーのIT日記

走るのが好きな5流のITエンジニアのブログ。

趣味の範囲は広いけど、どれも中途半端なクソブロガー楽しめるWebアプリを作ってあっと言わせたい。サーバーサイドPerl(Mojolicious)、クライアントサイドVue.js。Arduinoにも触手を伸ばす予定。

Backbone.jsのテンプレート使う時にはまったこと

下記は、NGのソース「Uncaught ReferenceError: description is not defined」 となります。

var Route = Backbone.Model.extend();

var RouteView = Backbone.View.extend({
    model : Route,
    
    template : _.template( "<h2><a href='/route/'><%= name %></a></h2><p></p><p><%= description %></p>"),

OKパターンは以下

var Route = Backbone.Model.extend({defaults :{
  description : ""
}

});

var RouteView = Backbone.View.extend({
    model : Route,
    
    template : _.template( "<h2><a href='/route/'><%= name %></a></h2><p></p><p><%= description %></p>"),

nameに関しては、Modelの定義がなくても表示できるんですが descriptionが、Modelのアトリビュートにないとエラーになった。 結局のところ、スコープ範囲にdescriptionという変数がないとダメってことなんだろうけど modelのアトリビュートがViewのスコープ範囲に勝手に入るような仕組みがあるんだろうなと推測。 まぁ、そういうことなんだろう。。。

難しいですねー。何時間も、はまってしまった。 でも、解決してすっきりしました。