2012-03-03 27 views
1

我对脊柱很新颖,现在我正在尝试设置我的第一个小应用程序。Spine.js和@navigate()内容没有正确加载

其中定义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_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/# 我看到一个LIS t我的帖子。 现在我的目标是:当我点击一篇文章,我想去/#/ post/[编号] 这也在工作BUT 而不是只看到所选文章的信息,我总是得到所有可用职位的列表根据帖子的细节。 当我打F5时,所有帖子的列表都不见了......

这是怎么发生的?我必须做什么才能看到与帖子相关的信息?

回答

2

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

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

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

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

因此,在您的DOM中,您应该看到2个控制器元素都带有一类堆栈,并且只有一个带有一个活动类型。

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

+0

我以为经理也会自动隐藏不活动的元素......非常感谢:) – soupdiver 2012-03-10 19:24:17

+0

是的,经理做同样的事情。堆栈只是扩展到管理器上。但他们都用CSS显示技巧做到这一点。很高兴我可以帮助:) – SpoBo 2012-03-12 22:05:35

+0

这有点奇怪...我添加了你写的CSS的东西,它运作良好。然后我删除它,它仍然按照我的预期从一开始就工作。奇怪...... – soupdiver 2012-03-14 10:39:23