我在木偶应用程序中有一个“FormView”类,该类为应用程序周围的表单提交设置了很多东西。每当有表格时,我都会使用它。我也有一些助手,我想通过templateHelpers
方法传递到每个表单模板中,但是我也希望能够在子代中添加其他templateHelpers
。像这样:
class Views.FormView extends Marionette.ItemView
templateHelpers: ->
helpers: Marionette.Concerns.Helpers
class Views.NewUser extends Views.FormView
templateHelpers: ->
variable: @something
我希望能够从
@variable
的模板访问@helpers
和NewUser
。另外,如果_.extends
是一个对象,我知道如何处理(通过templateHelpers
),但是我需要将它作为一个函数。可能吗?如果是这样,怎么办?
最佳答案
在Backbone中,当您从另一个类继承时,Backbone将为子类提供__super__
属性(两端都加双下划线),该属性是父类的原型(prototype)。因此,从Views.NewUser
类中,您可以通过View.NewUser.__super__
获得原型(prototype)。然后,您可以在该对象上调用templateHelpers
。这是我的操作方式(live example at JSbin):
Views = {}
class Views.FormView extends Marionette.ItemView
templateHelpers: ->
helpers: "Parent Value"
logHelpers: ->
console.log @templateHelpers()
class Views.NewUser extends Views.FormView
templateHelpers: ->
variable: "Child Value"
logHelpers: ->
console.log @templateHelpers()
console.log Views.NewUser.__super__.templateHelpers()
formView = new Views.FormView()
formView.logHelpers() // { helpers: "Parent Value" }
newUser = new Views.NewUser()
newUser.logHelpers()
// { variable: "Child Value" }, { helpers: "Parent Value" }
然后,您可以使用
_.extend
彼此扩展。也许像这样:initialize: ->
@helpers = _.extend @templateHelpers(),
Views.NewUser.__super__.templateHelpers()
关于javascript - 从 Marionette 中的父级扩展Coffeescript子类函数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30950614/