2013-08-27 35 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