我试图在ember中创建动态导航栏。我在应用程序模板中包含了一个部分标题,其中包含一个元素' search'这应该只在我到达我的事件索引路线时才可见。我试图这样做:
ApplicationController = Ember.Controller.extend(
eventsIndexController: Ember.inject.controller 'events/index'
isSearchActive: Ember.computed 'eventsIndexController.showSearch', ->
@get 'eventsIndexController.showSearch'
在事件索引控制器中:
EventsIndexController = Ember.Controller.extend(
showSearch: false
当它到达事件索引路径
时EventsIndexRoute = Ember.Route.extend(
model: ...
setupController: (controller, model) ->
controller.set('model', model)
controller.set('showSearch', true)
deactivate: ->
@controllerFor('events.index').set('showSearch', false)
它工作正常 - 模型设置正确,搜索选项仅在事件索引路径中可见。问题是我想在单击搜索时执行某些操作,但由于此操作在 EventsIndexController 中声明,因此我无法从应用程序模板以正常方式调用它。所以我的第一个问题是:
第二个问题是:
答案 0 :(得分:1)
由于您已将EventsIndexController
注入ApplicationController
,因此您可以在此处单击搜索,然后使用send
方法在注入的控制器上触发所需的操作。
ApplicationController = Ember.Controller.extend({
eventsIndexController: Ember.inject.controller('events/index'),
actions: {
searchClicked: function() {
this.get('eventsIndexController').send('searchClicked');
}
}
});
或者,您可以直接在注入的控制器上调用方法。