Spine = require('spine')
Welcome = require('controllers/welcome')
Signup = require('controllers/signup')
class Main extends Spine.Stack
controllers:
welcome: Welcome
signup: Signup
default: 'signup'
routes:
'/welcome': 'welcome'
'/signup': 'signup'
module.exports = Main
welcome
和signup
控制器只渲染一个视图,这样我就能理解堆栈是如何工作的:
Spine = require('spine')
class Welcome extends Spine.Controller
className: 'welcome'
constructor: ->
super
@active @render
render: ->
console.log 'welcome render function'
@html require('views/welcome')()
module.exports = Welcome
然后根据stack docs,我将此添加到我的css:
.stack > *:not(.active) {
display: none
}
我故意让注册控制器执行@navigate('/welcome')
而不是渲染其视图以查看我将如何控制堆栈。欢迎的render函数中的console.log
语句会被调用,但是欢迎<div>
没有添加active
类,并且因为上面的CSS没有显示。< / p>
我已经重读了几次文档,用Google搜索,并且不确定我错过了什么。为什么不将活动类添加到welcome el?
答案 0 :(得分:1)
我怀疑问题是你在render
事件中调用active
,这是在添加类之后发生的事件。由于render
调用@html
,它将替换已添加类的HTML。
顺便说一句,脊椎我已经发现阅读源代码可以帮助很大。这是一个很小的框架。有关堆栈的相关代码,请参阅https://github.com/spine/spine/blob/dev/src/manager.coffee。