Backbone.js 經過了半年終於在 10 月 Release 了 1.1.0 版本,這次升級最重要的一點就是,Backbone 本來在 View 有支援 options,讓你可以透過初始化過程,將自定額外的 key 及 value 帶入,並且可以隨時透過 this.options.key 的方式取得資料。直接給例子來解說好了
this.example = new Backbone.View.extend({
template_name: "user_edit",
el: "#main"
});
template_name: "user_edit",
el: "#main"
});
上面是宣告 Backbone.view 的寫法,程式設計師可以傳入 object 設定,並且可以在程式任意地方,使用 this.example.options.template_name 方式來得到 user_edit 值,如果是使用 Backbone 1.1.0 之前的版本都沒問題,要升級到 1.1.0,又想要此功能,請務必在 view 的宣告前就必須加一段程式碼(後面解說)。為什麼作者會拿掉呢?因為有開發者發 issue 說為什麼 View 有這功能,那 Model 為什麼沒有呢?,這會讓未來加入開發的程式設計師感到困擾,所以作者就決定拿掉這塊
_configure: function(options) {
if (this.options) options = _.extend({}, _.result(this, 'options'), options);
_.extend(this, _.pick(options, viewOptions));
this.options = options;
},
if (this.options) options = _.extend({}, _.result(this, 'options'), options);
_.extend(this, _.pick(options, viewOptions));
this.options = options;
},
當然,也有熱心的開發者提供相容性解法
var View = Backbone.View
Backbone.View = View.extend({
constructor: function (options) {
this.options = options;
View.apply(this, arguments);
}
});
Backbone.View = View.extend({
constructor: function (options) {
this.options = options;
View.apply(this, arguments);
}
});
其他的修正就沒什麼地方需要注意的了,這也難怪 Backbone 一些 Plugin 尚未升級到 1.1.0 相容性的關係 XD