Spine.js和@navigate()内容未正确加载

时间:2012-03-03 14:20:57

标签: javascript spine.js

我对脊柱很新,现在我正在尝试设置我的第一个小应用程序。

我有一个帖子控制器,用于定义2条路线: 一个显示特定帖子,一个显示所有帖子

class Posts extends Spine.Controller
  className: 'posts'

  constructor: ->
    super

    @main = new Main

    @routes
      '/post/:id': (params) ->
    @main.show.active(params)
      '/posts': ->
    @main.show_all.active()

    @append @main

到目前为止工作...... 然后我有一个posts.main控制器 我在哪里定义我的show和show_all控制器

Post = require('models/post')

class Show extends Spine.Controller
  className: 'show'

  constructor: ->
    super
    @active @load

  load: (params) =>
    @item = Post.find(params.id)
    @html require('views/post')(@item)

class Show_all extends Spine.Controller
  className: 'show_all'

  events:
    "click .items" : "click"

  constructor: ->
    super
    @active @load

  load: =>
    @item = Post.all()
    @html require('views/posts')(@item)

  change: (postId) =>
    @navigate("/post", postId)

  click: (event) ->
    @change(event.target.id)

class Main extends Spine.Stack
  className: 'main Stack'
  controllers:
    show: Show
    show_all : Show_all

module.exports = Main

目前还在工作 当我到达时:http://localhost:9294/# 我看到了我的帖子列表。 现在我的目标是:点击帖子我想去/#/ post / [ID] 这也是有效的 我不会只看到所选帖子的信息,而是始终在帖子详细信息下获得所有可用帖子的列表。 当我点击F5时,所有帖子的列表都消失了......

为什么会这样?我该怎么办才能看到与帖子相关的信息?

1 个答案:

答案 0 :(得分:2)

所以您遇到的问题是,不仅会显示帖子详细信息,还会显示完整的帖子列表?

如果是这样,你是否添加了必要的CSS?

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

Spine堆栈管理多个控制器,并将“活动”类添加到应该处于活动状态的控制器元素中。

所以在你的DOM中你应该看到2个控制器元素都有一个堆栈类,只有一个有一个活动类。

CSS确保隐藏所有非活动控制器。