我得到了一个aside.sidebar
带有相关 spin.js 控制器的 html 元素。
class App.Sidebar extends Spine.Controller
tag: 'aside'
className: 'sidebar'
我如何从元素中获取控制器?像这样的东西:
con = $("aside.sidebar").spineController().someControllerMethod()
我正在使用 jquery + spin.js。
我查看了控制器源代码,看起来没有内置方法可以从元素访问控制器(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()