【问题标题】:Spine.js get associated controller from elementSpine.js 从元素获取关联的控制器
【发布时间】:2013-08-01 23:38:44
【问题描述】:

我有一个 html 元素 aside.sidebar 和一个关联的 spin.js 控制器。

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

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

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

我正在使用 jquery + spin.js。

【问题讨论】:

    标签: dom spine.js


    【解决方案1】:

    我查看了控制器源代码,但似乎没有从元素 (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()
    

    【讨论】:

    • 非常感谢!在第二个选项中,它必须是 @el.data 'controller', this
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-06-06
    • 2011-08-18
    • 1970-01-01
    • 2016-12-03
    • 1970-01-01
    • 2013-03-24
    • 1970-01-01
    相关资源
    最近更新 更多