Backbone.marionette新手入门系列
已经不用了,所以弃坑。
initialize(options, args...)
1 | const MyObject = MnObject.extend({ |
extend
1 | // Backbone.extend === _.extend |
triggerMethod(methodName, args...)
1 | const MyObject = MnObject.extend({ |
bindEvents(entity, events)
1 | import Radio from 'backbone.radio'; |
unbindEvents(entity, [hashMap])
bindRequests(entity, hashMap)
bindRequests
:应该叫bindReply
更贴切,绑定的是响应处理函数
hashMap
=>{ 'request:name': 'replyHandler' }
unbindRequests(channel, [hashMap])
{ 'request:name': 'replyHandler' }
normalizeMethods(hashMap)
1 | const hash = { |
getOption(optionName)
获取定义在
instance
上的option
,如果instance
没有,则优雅降级从option
上查找。
1 | const View = View.extend({ |
Falsey values
getOption
将返回任何falsey values
而不是undefined
,如果getOption
在options
中无法获取属性,将会直接从instance
实例中读取。
mergeOptions(options, props)
把
options
中的props
中的属性合并到instances实例上
1 | const MyObject = MnObject.extend({ |
options
initialize
中的options
和对象instance
实例化的options
一样,所以在initialize
中使用options
,有必要使用getOption
获取.
1 | const MyObject = MnObject.extend({ |
Marionette.View
属性:
el
,id
,tagName
,attributes
,className
model
,modelEvents
,collection
,collectionEvents
events
,triggers
template
,templateContext
childViewEventPrefix
,childViewEvents
,childViewTriggers
behaviors
,ui
regionClass
,regions
注意:
因为所有的
events
都在el
上代理,所以如果events
中的selector
和childViewEvents
中的selector
相同时,events
中的handle
能够同时响应events
和childViewEvents
中触发的事件,解决这个问题很简单,在childViewEvents
的handler
中阻止事件冒泡传播
render
Marionette.View.render
不能被override
重写,只能通过before:render
events
Backbone
用来绑定DOM
事件
triggers
转换
DOM
事件=>Marionette Event
,就是把DOM Event
变为通用的发布订阅事件,这样外部对象就和具体的DOM结构解耦场景适用:
childViewEvents
=>parentView
主要是解决父子view
之间的事件传递.作用:类似
Backbone.Model
对象,自身定义了很多Entity Event,entity event
会在model
的属性变化时触发;而triggers
中定义的就是DOM事件到Class Event的一个映射关系,所以handler,可以是view
内部(和events
效果一样),或者外部其它的Marionette对象也可以处理。
1 | const MyView = View.extend({ |
childViewEvents
ui
就是
query
出view context
渲染之后的范围内DOM Element
(this.$(selector))