View.attributesがよく分からなかったので、下記のようなattr()メソッドを作ってました。
var HogeView = Backbone.View.extend({
attributes: {
foo: 0
},
attr: function(key, val){
if(val == null){ return this.attributes[key]; }
this.attributes[key] = val;
}
});
var hoge = new HogeView();
hoge.attr('foo', 10);
hoge.attr('foo'); // 10
datasetの絡みだったので、$(elm).data()でもよかったのかもしれなかったですが。
でも取得は出来ても、設定は$(elm).attr()じゃないとダメっぽかったので。
{
attr: function(key, val){
if(!this.attributes.hasOwnProperty(key)){
throw new Error('HogeView not has ' + key + ' attribute!');
}
if(val == null){ return this.attributes[key]; }
this.attributes[key] = val;
}
}
こうしてやると、View.attributesにない項目は取得もできないし設定もできなくなりますね。