2012-03-03 58 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