你的问题的答案是你不能直接这样做,但总有一种方法。 你可以做到这一点使用_.invoke(this._behaviors, 'yourMethodName')
但我会劝阻使用它 因为
_behaviors是Marionette.View类的私有变量,它的名称可以更改,也可以在即将到来的版本中被删除
您将不得不为该方法设置上下文,因为_.invoke不会将该方法的上下文设置为适当的方式 。
如果您可以正确设置上下文,那么这将适用于您。
由@ThePaxBisonica在评论中建议 我会建议你使用mixin模式,从中可以扩展行为和视图,并且不必设置任何上下文,也不必担心_behavior私有变量
为
var mixin = {
behaviorMethodWhichYouWantToCallFromView: function(){
alert("mixin method");
}
}
var behavior = mn.behavior.extend(_.extend(mixin, {
//actual behavior code remove the method as behavior will get it from mixin
}))
var view = mn.view.extend(_.extend(mixin, {
//actual view code remove the method as behavior will get it from mixin
}))
希望它能帮助。 我知道这是有点长途径。
你有权访问行为中的视图,如果你想这样做,你可以从那里扩展视图。 –