Spine.js中的控制器间通信

时间:2012-10-30 13:26:35

标签: javascript ruby-on-rails coffeescript spine.js

是否可以在同一个Spine.js中拥有两个控制器:公寓和地图。有没有办法打电话让地图在选择公寓时做点什么?

# Apartments
class Show extends Spine.Controller
  events:
    'click [data-type=edit]': 'edit'
    'click [data-type=back]': 'back'

  constructor: ->
    super
    @active (params) ->
      @change(params.id)

  change: (id) ->
    @item = Apartment.find(id)
    @render()

  render: ->
    @html @view('apartments/show')(@item)
    # also update the map here.

1 个答案:

答案 0 :(得分:2)

我猜你几乎没有选择

使用路线

使用Spine的路由导航到公寓网址并更新地图。您可以在Spine的Contacts example上看到一个示例。

在index.coffee上定义/ apartment routes:

@routes
      '/apartment/:id': (params) ->
        @apartmentList.active(params)
        @map.show.active(params)

在侧边栏/公寓列表控制器上,使用@navigate更改状态

  change: (item) =>
    @navigate '/apartment', apartment.id

最后在地图控制器上捕捉活动事件(like here)并更新地图

使用事件

选择公寓火灾事件

Spine.trigger 'selectApartment', item.id
然后在地图控制器上捕捉此事件:
Spine.bind 'selectApartment', onSelectAparmtnet