1

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

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

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

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

我正在使用 jquery + spin.js。

4

1 回答 1

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()
于 2013-07-22T16:46:24.177 回答