我在設置<ul>
元素的高度,寬度和背景圖像。設置Backbone的動態CSS樣式屬性。查看
這裏就是我有我的Backbone.View:
var RackView = Backbone.View.extend({
tagName: 'ul',
className: 'rack unselectable',
template: _.template($('#RackTemplate').html()),
render: function() {
this.$el.html(this.template(this.model.toJSON()));
return this;
},
attributes: function() {
var isFront = this.model.get('isFront');
var imageUrlIndex = isFront ? 0 : 1;
return {
'background-image': 'url(' + this.model.get('imageUrls')[imageUrlIndex] + ')',
'height': this.model.get('rows') + 'px',
'width': this.model.get('width') + 'px'
};
}
}
這並不工作,因爲屬性沒有寫進元素的「風格」屬性。相反,他們被視爲屬性......這是有道理的,因爲函數的名稱,但它讓我想知道 - 我該如何實現這樣的正確?
的圖像,高度和寬度都被設置後不可變的,如果這能幫助簡化...
難道我只是換我的風格的回報?這似乎過於錯綜複雜......
這裏是生成的HTML:
<ul background-image="url(data:image/png;base64,...)" height="840px" width="240px" class="rack unselectable">
</ul>
編輯:這工作,但我不會火上澆油:
attributes: function() {
var isFront = this.model.get('isFront');
var imageUrlIndex = isFront ? 0 : 1;
var backgroundImageStyleProperty = "background-image: url(" + this.model.get('imageUrls')[imageUrlIndex] + ");";
var heightStyleProperty = "height: " + this.model.get('rows') + 'px;';
var widthStyleProperty = "width: " + this.model.get('width') + 'px;';
return {
'style': backgroundImageStyleProperty + ' ' + heightStyleProperty + ' ' + widthStyleProperty
};
},
如何在$ EL與選擇的節點? –