我想从控制器在外部路由器中设置一些属性。有没有办法做到这一点? 目前,当我尝试:
AS.AnalyticsIndexController = Ember.Controller.extend({
needs: ["analyticsRunsIndex"],
engagements: null,
exercises: null,
exerciseRuns: null,
selectedExercise: null,
selectedExerciseRun: null,
selectedEngagement: null,
actions: {
goToAnalyticsRuns: function () {
if (this.get('selectedExerciseRun.id')) {
this.get('controllers.analyticsRunsIndex').get('target').set('exerciseRunId', this.get('selectedExerciseRun.id'));
}
}
}
.......
“this.get('controllers.analyticsRunsIndex')。get('target')”此时返回主路由器。感谢。
答案 0 :(得分:0)
我不记得为什么我想以这种方式做事,但似乎没有直接的方式来访问外部路线。我可以做的是通过控制器本身访问外部路由器,如:
AS.AnalyticsRunsIndex = Ember.ObjectController.extend({
actions:{
do: function(something){
this.get('target').set('exerciseRunId', something);
}
}
});
在AnalyticsIndexController中:
actions: {
goToAnalyticsRuns: function () {
if (this.get('selectedExerciseRun.id')) {
this.get('controllers.analyticsRunsIndex').send('do',this.get('selectedExerciseRun.id'));
}
}
}
我认为我试图做的事情可能不是“Ember”做事方式。因此,如果其他人试图解决类似问题,可能最好仔细查看是否有更好的做事方式。
答案 1 :(得分:0)
现在在Ember中执行此操作的规范方法是使用getOwner
。
例如,将操作发送到您的应用程序路由:
import Component from '@ember/component';
import { action } from '@ember/object'; // https://github.com/pzuraq/ember-decorators-polyfill
import { getOwner } from '@ember/application';
export default class MyTopLevelComponent extends Component {
@action
closeModal() {
getOwner(this).lookup('route:application').send('closeModal');
}
});