将coffee脚本转换为javascript-简单扩展
我有一些咖啡脚本-将coffee脚本转换为javascript-简单扩展,javascript,inheritance,coffeescript,Javascript,Inheritance,Coffeescript,我有一些咖啡脚本- class Zoo.CollectionView extends Zoo.View _set_element_attributes: -> @$el.data(view: this) @$el.addClass('collection') return unless @collection? @$el.attr('data-name': @collection.collection_name) @$el.attr('data
class Zoo.CollectionView extends Zoo.View
_set_element_attributes: ->
@$el.data(view: this)
@$el.addClass('collection')
return unless @collection?
@$el.attr('data-name': @collection.collection_name)
@$el.attr('data-variant': @variant) if @variant?
@$el.data(collection: @collection, view: this)
我想转换成javascript并尽可能简单。我原以为这样行得通,但它似乎不喜欢我的工作
Zoo.CollectionView = function() {
}
$.extend(Zoo.CollectionView.prototype, Zoo.View.prototype);
Zoo.CollectionView.prototype._set_element_attributes = function() {
this.$el.data({
view: this
});
this.$el.addClass('collection');
if (this.collection == null) {
return;
}
this.$el.attr({
'data-name': this.collection.collection_name
});
if (this.variant != null) {
this.$el.attr({
'data-variant': this.variant
});
}
return this.$el.data({
collection: this.collection,
view: this
});
};
CoffeeScript的
extend
与主干网的extend
兼容,因此您应该能够做到:
Zoo.CollectionView = Zoo.View.extend({
_set_element_attributes: function() {
// This part should be easy and it looks like you
// have it in hand.
}
});
我不明白您为什么要尝试将Backbone.Model
的原型合并到Zoo.CollectionView
:
$.extend(Zoo.CollectionView.prototype, Backbone.Model.prototype);
因为你的咖啡脚本没有做任何类似的事情,而且模型和视图都是非常不同的东西。这非常有效,而且非常简洁。非常感谢。