2013-08-27 65 views
1

我想弄清楚如何建立一個定製的Ember.Select控件作爲一種全球導航控制。Ember JS全球導航選擇菜單

見這個例子:

http://jsbin.com/ahERinI/1/

你會發現, 「本地導航下拉」 的作品就好了。但是「全球導航下拉」沒有。

在全局情況下,燼選擇的上下文不正確。但我不太清楚如何設置綁定以使行爲按預期工作。

我還希望能夠將此控件放置在很多不同的模板中,以便更好地瞭解如何在此場景中設置路線和控制器。

回答

1

真的你在談論它生活在應用程序級別。您始終不能從應用程序級訪問學生控制器(它可能並不總是存在)。所以無論你需要從應用程序控制器返回學生模型,還是做一些別緻的事情。

下面是第一個例子。

http://jsbin.com/oVoqUY/6/edit

App.ApplicationController = Ember.ObjectController.extend({ 

    studModel: function(){ 
    return App.Student.find(); 
    }.property(), 

    selectStudent: function(studentId){ 
    this.transitionToRoute('student', studentId); 
    } 

    }); 
+0

OK,這是有道理的。我沒有想到ApplicationController中的計算屬性。聰明!所以在這種情況下,每次請求屬性時都會有XHR請求。我應該把.cacheable()放在最後。不確定觀察者行爲如何在這種情況下工作。 –

+0

取決於您使用的適配器,它可能只能打一個電話。或者,您始終可以讓學生爲應用程序路由默認路線,並將該選擇器移至學生模板。您也可以從應用程序中獲取studModel,以免重複調用。就我個人而言,我喜歡這個應用程序只是一個插座的想法,並且如果學生的全局搜索將在應用程序的任何地方都可用,那麼它總是重定向到學生級別。 – Kingpin2k