1

是否可以在同一个 Spine.js 中有两个控制器:Apartments 和 Map。选择公寓时,有没有办法调用获取地图做某事?

# 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.
4

1 回答 1

2

我想你有几个选择

使用路线

使用 Spine 的路由导航到公寓 url 并更新地图。您可以在 Spine 的联系人示例中看到一个示例。

在您的 index.coffee 上定义 /apartment 路线:

@路线
      '/公寓/:id':(参数)->
        @apartmentList.active(参数)
        @map.show.active(参数)

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

  更改:(项目)=>
    @navigate '/公寓', 公寓.id

最后在您的地图控制器上捕获活动事件(如这里)并更新地图

使用事件

选择公寓火灾事件时

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

于 2012-10-30T14:47:55.570 回答