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のスコープ範囲に勝手に入るような仕組みがあるんだろうなと推測。 まぁ、そういうことなんだろう。。。
難しいですねー。何時間も、はまってしまった。 でも、解決してすっきりしました。