1

同じSpine.js内にApartmentsとMapの2つのコントローラーを配置することは可能ですか?アパートが選択されたときにマップに何かをさせるように呼び出す方法はありますか?

# 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 のContacts exampleで例を見ることができます。

index.coffee で /apartment ルートを定義します。

@ルート
      '/アパート/:id': (パラメーター) ->
        @アパートリスト.active(params)
        @map.show.active(params)

サイドバー/アパートメント リスト コントローラで @navigate を使用して状態を変更します

  変更: (項目) =>
    @navigate '/アパート', アパート.id

最後に、マップ コントローラー (ここのように)でアクティブなイベントをキャッチし、マップを更新します。

イベントの使用

マンション火災イベントを選択する場合

Spine.trigger 'selectApartment', item.id
次に、Map コントローラーでこのイベントをキャッチします。
Spine.bind 'selectApartment'、onSelectAparmtnet

于 2012-10-30T14:47:55.570 に答える