我正在尝试在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
in 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'
in 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'
添加此代码后,所有路由仍然有效,但没有根堆栈。
希望有一点经验的人可以帮助我摆脱这个问题!
答案 0 :(得分:0)
如果不进行太多研究,您似乎应该在某处new App.Root
或extends App.Root
。这可以解释为什么你的路由正在工作,但没有根堆栈。