0
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

然后根据堆栈文档,我将其添加到我的 css 中:

.stack > *:not(.active) {
  display: none
}

我故意让注册控制器做@navigate('/welcome')而不是渲染它的视图来看看我将如何控制堆栈。console.logWelcome 的渲染函数中的语句确实被调用<div>了,但是 Welcome 没有active添加类,并且由于上面的 CSS,没有显示。

我已经重新阅读了几次文档,在谷歌上搜索了一下,我不确定我错过了什么。为什么没有将活动类添加到欢迎 el 中?

4

1 回答 1

1

我怀疑问题在于您是render作为active事件的一部分调用的,这是在添加类之后发生的。自render调用以来@html,它将替换添加了该类的 HTML。

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

于 2013-07-25T16:35:41.537 回答