Spine.js从element获得关联的控制器

时间:2013-07-22 14:03:28

标签: dom spine.js

我得到了一个带有关联spine.js控制器的html元素aside.sidebar

class App.Sidebar extends Spine.Controller
  tag: 'aside'
  className: 'sidebar'

如何从元素中获取控制器?像这样的东西:

con = $("aside.sidebar").spineController().someControllerMethod()

我使用的是jquery + spine.js。

1 个答案:

答案 0 :(得分:0)

我查看了控制器源代码,看起来没有从元素(https://github.com/spine/spine/blob/dev/src/spine.coffee#L482)访问控制器的内置方法。我所做的是创建一个全局变量来保存控制器,以便我可以从其他地方访问它:

app = new App()

# inside of App constructor:
@foo_widget = new App.FooWidgetController()

# from other non-spine code:
app.foo_widget.method()

另一种选择是使用jquery的data()方法自己进行关联:

class App.FooWidgetController
  constructor: ->
    super
    @el.data 'controller', this

# from other code:
$('#widget').data('controller').method()