1

Spine.js でネストされたスタックを設定しようとしています。

他の人のために動作すると思われるコード ( https://gist.github.com/MikeSilvis/2839845 ) をコピーして貼り付け、コントローラーとモデル名を調整しましたが、動作しません。 両方のスタックが完全に正しく表示され、コンソールにもエラーはありません。しかし、ネストされたスタックの使用法を完全に誤解していなければ、それらはルート スタック内にネストされていません。ビューに追加する必要があるものはありますか?

index.coffee:

class App extends Spine.Controller

  constructor: ->
    super
    new Spine.SubStack
    Spine.Route.setup()

    @append(@groups = new App.Groups)
    @append(@people = new App.People)

class App.Root extends Spine.Stack
  $.fn.item = ->
    elementID   = $(@).data('id')
    elementID or= $(@).parents('[data-id]').data('id')
    Person.find(elementID)
  controllers:
    groups: App.Groups
    people: App.People

  routes:
    '/groups' : 'groups'
    '/people' : 'people'

  default: 'people'
  className: 'stack root'

class Spine.SubStack extends Spine.Stack

  constructor: ->
    for key,value of @routes
      console.log [key, value].join(" | ")
      do (key,value) =>
        @routes[key] = =>
          @active()
          @[value].active(arguments...)
    super

window.App = App

groups.coffee で:

class App.Groups extends Spine.SubStack
  controllers:
    index: Index
    edit:  Edit
    show:  Show
    new:   New

  routes:
    '/groups/new':      'new'
    '/groups/:id/edit': 'edit'
    '/groups/:id':      'show'
    '/groups':          'index'

  default: 'index'
  className: 'stack groups'

people.coffee で:

class App.People extends Spine.SubStack
  controllers:
    index: Index
    edit:  Edit
    show:  Show
    new:   New

  routes:
    '/people/new':      'new'
    '/people/:id/edit': 'edit'
    '/people/:id':      'show'
    '/people':          'index'

  default: 'index'
  className: 'stack people'

このコードを追加した後もすべてのルートは引き続き機能しますが、ルート スタックはありません。

うまくいけば、私より少し経験のある人がこの問題から私を助けてくれるでしょう!

4

1 に答える 1

0

new App.Rootあまり調査をしなくても、またはextends App.Rootどこかにある必要があるようです。ルートが機能している理由を説明できますが、ルート スタックはありません。

于 2013-11-23T18:16:50.297 に答える