2013-07-06 29 views
1

我正在研究需要在登錄後修改導航欄內容的應用程序。下面是我放在一起(與其它樣品一些幫助在線)一個基本的素描: http://jsbin.com/umutag/1/此基礎代碼:http://jsbin.com/umutag/1/editEmber Navbar需要在更改時顯示模型數據

如何獲得頭視圖中顯示模型數據?

我應該爲模板使用不同的幫手嗎? (例如:{{view}},{{render}}或{{control}})

順便說一句,我已經搜遍了這個網站和其他人,但大多數條目都是幾個月大,我看到燼有自那時以來一直在變化很大(或者我錯過了很明顯的東西)。上面的例子使用Ember 1.0.0 RC6。

布萊恩

回答

1

你最終想要的價值,保持用戶是否在或者沒有登錄跟蹤控制器(可能ApplicationController)綁定。由於這與登錄有關,所以很可能有類似於跟蹤令牌的SessionController。這裏有一種方法去做:

App.SessionController = Em.Controller.extend({ 
    token: null, 
    username: null, 

    isLoggedIn: function() { 
    return !!this.get("token"); 
    }.property("token"); 

    // ... 
}); 

App.ApplicationController = Em.Controller.extend({ 
    needs: "session", 
    isLoggedInBinding: "controllers.session.isLoggedIn", 
    usernameBinding: "controllers.session.username" 

    //... 
}); 

而在你的導航欄模板:

{{#if isLoggedIn}} 
    <li>Logged in as {{username}}</li> 
    <li>{{#linkTo "index"}}Home{{/linkTo}}</li> 
    <li>{{#linkTo "secret"}}Secret{{/linkTo}}</li> 
    {{else}} 
    <li>{{#linkTo "login"}}Log in{{/linkTo}}</li> 
    {{/if}} 
+0

謝謝!我會試試這個。 – bk11425

+0

我得到了它的工作,但只有一半。我最終使用了{{partial}}模板助手,所以現在當'isAuthenticated'值發生變化時,標題內容會發生變化。由於這裏(的CoffeeScript): 'App.LoginController = Ember.ObjectController.extend 需要: 「會話」 ... clickLogin:(E) - > ... @set( 「model.IsAuthenticated」 true) @set(「controllers.session.isAuthenticated」,true)' 再次感謝您的幫助。 -Bryan – bk11425

+0

不過還有一個問題。有沒有辦法讓控制器觀察一個ember-data模型對象的變化?我想這一點,但無濟於事: 'App.SessionController = Em.Controller.extend 用戶名:空 usernameBinding: 'App.Me.Username' isAuthenticated:空 isAuthenticatedBinding: 'App.Me.IsAuthenticated' ' – bk11425

相關問題