2014-01-24 65 views
0

我目前正在爲我的應用程序使用一些麪包屑,在我當前的體系結構中,控制器可以有一個title屬性,我的Breadcrumb控制器在路徑更改中選擇。我將如何動態地從另一個控制器獲取屬性

這是我的代碼。

MyApp.HomeBreadcrumbController = Ember.ObjectController.extend 
    needs: ['application'] 
    app: Ember.computed.alias('controllers.application') 

    path: (-> 
    @controllerFor(@get('app.currentPath')).get('title') 
).property('app.currentPath') 

這完美的作品,題目是從電流控制器牽強,但有一個問題,這就是,如果我在控制檯看我得到什麼。

DEPRECATION: Controller#controllerFor is deprecated, please use Controller#needs instead 

我試圖將它轉換,但沒有運氣的是,有沒有什麼辦法,我可以做類似的東西提供?

我的家鄉路線。

MyApp.HomeRoute = Ember.Route.extend 
    renderTemplate: -> 

    @render 'home/breadcrumbs', 
     controller: 'homeBreadcrumb' 
     outlet: 'beforeContent' 
     into: 'application' 

    @render() 

而且breadcrumb.hbs

<div class="before-content blue-gradient"> 
    <div class="ui breadcrumb"> 
     <a class="section">{{path}}</a> 
    </div> 
</div 
+0

'@get('app.currentPath.title')'工作嗎? – claptimes

+0

會很整潔,但不是:/ – MartinElvar

+0

也許安裝一個jsbin? – claptimes

回答

0

考慮到,如果你要做到這一點,而不別名,你應該做的:

this.get('controllers.application').get('currentPath').get('title') 

我想說的只是嘗試

@app.get('currentPath').get('title') 

如果別名按照它的方式工作然後它應該工作。

+0

可悲的ID不,在我看來,controllerFor方法,評估到控制器的路線。在你的例子中,你正在調用.get('title')字符串,currentPath返回。因此get方法不存在。 – MartinElvar

+0

@get('app.currentPath')。get('title')看起來很奇怪,因爲適用於你的方法是從currentPath獲取標題 – ShinySides

+0

我只是這樣做,沒有運氣。我得到Uncaught TypeError:對象home.blogs.index沒有方法'get'其中home.blogs.index是我的路線 – MartinElvar

相關問題