簡體   English   中英

Ember.js布局

[英]Ember.js Layout

我剛剛對ember.js感到滿意,並希望使用它創建一個單頁應用程序。 由於應用程序的性質,在某些時候我將有多個“主要”布局。

用戶登錄到應用程序后,我需要基於ajax調用顯示用戶名。 我還不了解如何在ember.js中最好地實現這一點,因為(至少對我而言)這不在任何視圖層次結構之內。

我使用了render方法的“ into”選項。

App.TestRoute = Ember.Route.extend({
  renderTemplate: function(controller, model) {
    this.render('layout');

    this.render('test',{
       into: 'layout'
    });
  },
});

我認為這也會調用布局路線並加載其模型。 不幸的是它沒有那樣做。

我用{{yield}}指令定義了一個布局

<div>
  <div class="container" id="header">
    {{loginUser.userName}}
  </div>

  <div class="container" id="main-content">
    {{yield}}
  </div>

  <div class="container" id="footer">
    Just some static footer
   </div>
</div>

我的看法像

App.TestView = Ember.View.extend({
  layoutName: 'layout'
});

渲染工作正常,但是我看不到可以最好地注入用戶數據的位置。 理想情況下,這對於使用此布局的所有視圖應該是透明的。 所以我的想法是使用繼承,但是還沒有找到可行的解決方案。

我在這里完全偏離軌道嗎,或者這在某種程度上有意義?

UPDATE

我將示例放在這里: http : //jsfiddle.net/Efz8N/4/

布局由控制器支持,該控制器使用布局支持視圖。

http://jsfiddle.net/WHvCZ/

loginUserFullName:function(){
    return this.get('controllers.application.loginUser') || 'not in';
}.property('controllers.application.loginUser')

這就是我現在的做法。 我創建了一個混合器,可以在任何使用布局的控制器中使用。 這樣,我至少不必多次執行此操作:

App.LayoutHandler = Ember.Mixin.create({
  loginUserFullName: function() {
    var name = App.get("loginUser")?App.get("loginUser"):"";

    return name;
  }.property("App.loginUser"),
});

App.IndexController = Ember.Controller.extend(App.LayoutHandler, {

});

下面是一個示例: http : //jsfiddle.net/Efz8N/6/

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM