我有一个应用程序,该应用程序显示基于路由的结果列表(特别是使用Emberjs插件的查询参数)。这些结果来自服务器的响应,并且需要在模型上进行find()调用。我正在尝试使用Ember.select视图的下拉列表来构建查询参数以过滤结果,但是我似乎找不到解决此问题的方法,因为:
我不确定如何(或者我什至可以)从控制器创建事件。当前,我有一个自我创建的控制器(带有createWithMixins),该控制器从Ember.select视图接收选定的绑定:
App.SlotsFiltersController = Ember.Object.createWithMixins({
weekday: null,
kind: null,
neighborhood: null,
filtersChanged: function() {
// I'd like to send an event to my current route here
}.observes('weekday', 'kind', 'neighborhood')
});
哪个可以正确观察Ember.Select的更改,但无权访问路由器。
我还尝试了子类化Ember.Select视图,并在valueDidChange上发送事件。这确实到达了路由,但是该值尚未在控制器中更新(我将使用过时的数据进行过滤)。
最后,我尝试扩展由路由实例化的控制器。我对此没有成功(观察者事件似乎没有触发,而且我不确定如何调试)。
有什么好方法吗?我觉得我朝着错误的方向前进,并且在进行了永久搜索之后,我仍然没有找到仍是最新的类似信息(发布非全局App.Router)。
我不确定如何(或者我什至可以)从控制器创建事件。目前,我有一个自行创建的控制器(带有createWithMixins)...
好的,这就是问题所在。这样创建控制器绝不是一个好主意,相反,控制器应该由ember创建和管理。当ember创建控制器时,它将注入控制器所需的属性,例如指向路线的'target'属性。然后,您可以将事件发送到该路由,如下所示:
App.SlotsFiltersController = Ember.Controller.extend({
weekday: null,
kind: null,
neighborhood: null,
filtersChanged: function() {
target.send('eventName')
}.observes('weekday', 'kind', 'neighborhood')
});
App.SlotsFiltersView = Ember.SelectView.extend({})
现在从您的模板中,使用{{render}}
帮助程序在SlotsFiltrersController的上下文中呈现SlotsFiltersView。
{{render slotsFilters}}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句