【发布时间】:2013-07-26 00:35:41
【问题描述】:
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'),而不是渲染其视图以查看我将如何控制堆栈。 Welcome 的渲染函数中的 console.log 语句确实被调用了,但是 Welcome 的 <div> 没有添加 active 类,并且由于上面的 CSS,没有显示。
我已经重读了几次文档,用谷歌搜索了一遍,我不确定我错过了什么。为什么没有将活动类添加到欢迎 el 中?
【问题讨论】:
-
我将这个问题缩小到我的一个控制器的构造函数,该控制器将一个函数绑定到
active事件,并且该绑定函数实际被调用,这发生在堆栈激活默认控制器之前。跨度> -
我意识到了一种更好的方法来做我想做的事情 - 我覆盖了我的堆栈的构造函数:构造函数: -> super if @verify_user() then @navigate('/welcome' ) 否则 @navigate('signup')
标签: spine.js