SpineJS堆栈不会向控制器添加活动类

时间:2013-07-25 14:50:27

标签: spine.js

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

welcomesignup控制器只渲染一个视图,这样我就能理解堆栈是如何工作的:

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?

1 个答案:

答案 0 :(得分:1)

我怀疑问题是你在render事件中调用active,这是在添加类之后发生的事件。由于render调用@html,它将替换已添加类的HTML。

顺便说一句,脊椎我已经发现阅读源代码可以帮助很大。这是一个很小的框架。有关堆栈的相关代码,请参阅https://github.com/spine/spine/blob/dev/src/manager.coffee