2014-10-11 70 views
0

我有一個非常基本的測試應用程序。它有兩頁空白索引和另一頁上的登錄表單。我想知道如何將變量傳遞到每個頁面上相同的佈局(顯示它的用戶名/狀態以及按狀態顯示登錄/註銷)。EmberJS將變量傳遞給佈局

或者最好的解決方案可能是這樣的:將用戶模型傳遞給可從任何地方訪問的AppController(如登錄頁面或登錄模式)以及如果更改並保存數據,則網站模板只是由通過變量。

我試圖找到一個好辦法,我找了幾個的人,但他們都不是工作:(如果你知道一個工作方式,請分享我還是告訴我該如何解決。

這裏是我的代碼:JS的我:

App = Ember.Application.create(); 

App.ApplicationController = Ember.Controller.extend({}); 


/* *** Index *** */ 
App.IndexView = Ember.View.extend({ 
    layoutName: 'app_view' 
}); 

App.IndexController = Ember.Controller.extend({ 
}); 


/* *** LOGIN *** */ 
App.Router.map(function() { 
    this.resource("login"); 
}); 
App.LoginView = Ember.View.extend({ 
    layoutName: 'app_view' 
}); 
App.LoginController = Ember.Controller.extend({ 
    login: function() { 
     // blah blah 
    } 
}); 

佈局模板:

<script type="text/x-handlebars" data-template-name="app_view"> 
    <header id="site"> 
     {{#link-to "index"}}Index{{/link-to}} 
     {{#link-to "login"}}Login{{/link-to}} 
     {{variablaWhatIWant}} 
    </header> 
    <hr /> 
    <section id="content"> 
     {{yield}} 
    </section> 
    <hr /> 
    <footer id="main"> 
     Footer 
    </footer> 
</script> 

2視圖模板:

<script type="text/x-handlebars" data-template-name="index"> 
    Hello INDEX page! 
</script> 
<script type="text/x-handlebars" data-template-name="login"> 
    <form class="form-horizontal" {{action "login" on="submit"}}> 
     <div class="control-group"> 
      Username: {{input value=username type="text"}} 
     </div> 
     <div class="control-group"> 
      Password {{input value=password type="password"}} 
     </div> 
     <button type="submit" class="btn">Log in!</button> 
    </form> 
</script> 

非常感謝! :)

回答

1

你有正確的想法,看到管理控制器http://emberjs.com/guides/controllers/dependencies-between-controllers

之間的依賴關係剛剛設置的需求屬性,你可以從任何其他

App.LoginController = Ember.Controller.extend({ 
    needs: ['application'], 
    login: function() { 
     this.authenticate(this.get('username'), this.get('password')).then(function(user) { 
      this.set('controllers.application.user', user); 
     }, 
     function(err) { 
      //auth err 
     } 
    } 
}); 
+0

是的,我得到這個部分訪問控制器,但如果向_ApplicatonController_添加變量_variablaWhatIWant:'qwe'_,它將不會在佈局模板中可見。所以基本上我想給_ApplicationCotnroler_添加一個默認值,這個值可以從模板中獲得,稍後如果我改變它,模板會自動改變它。 – 2014-10-12 11:50:59

+1

@KrizsánBalazs你可以通過'{{controllers.application.variablaWhatIWant}}'來訪問任何需要控制器的模板的屬性:['application']'所有的綁定都可以正常工作。 – Jakeii 2014-10-12 12:27:49

+0

非常感謝! :) – 2014-10-12 13:37:35