我使用Chris McCord的这个奇妙的宝石,Sync
我的项目工作正常,除了与职位有关的小问题。
在我有的宝石的coffeescript文件中
class Sync.PartialCreator
attributes:
name: null
resourceName: null
authToken: null
channel: null
selector: null
direction: 'append'
refetch: false
constructor: (attributes = {}) ->
@[key] = attributes[key] ? defaultValue for key, defaultValue of @attributes
@$el = $("[data-sync-id='#{@selector}']")
@adapter = Sync.adapter
我需要改变从追加到前置的方向。 有没有办法改变这个,或者我必须分叉宝石?
答案 0 :(得分:0)
有很多方法可以更改默认值。
在创建对象时提供属性值,构造函数参数中的attributes = {}
专门用于此:
o = new Sync.PartialCreator(direction: 'prepend')
修改默认值的子类:
class Pancakes extends Sync.PartialCreator
attributes:
name: null
resourceName: null
authToken: null
channel: null
selector: null
direction: 'prepend'
refetch: false
o = new Pancakes
你必须在这里提供整件事。如果您有$.extend
,_.extend
或类似内容,则可以说:
class Pancakes extends Sync.PartialCreator
attributes: _({}).extend(Sync.PartialCreator::attributes, direction: 'prepend')
o = new Pancakes
仅使用direction
替换来制作副本。
子类并在构造函数中设置自己的direction
:
class Pancakes extends Sync.PartialCreator
constructor: (args...) ->
super(args...) # Pass all the arguments up to the Sync.PartialCreator
@direction = 'prepend' # Force the direction
o = new Pancakes
或者只是摆弄所需的默认值:
class Pancakes extends Sync.PartialCreator
constructor: (args...) ->
args[0] ?= { }
args[0].direction ?= 'prepend' # Set the direction if one isn't supplied
super(args...) # Punt to the base class.
o = new Pancakes
Monkey patch Sync.PartialCreator
。加载 Sync.PartialCreator
之后 之前尝试使用它,只需修补原型:
Sync.PartialCreator::attributes = 'prepend'
您使用哪种方法取决于您的具体情况。