我的应用程序只有一个应用程序路由,它设法没有显式的控制器文件。事实上,我根本没有控制器文件,并希望保持这种状态。
在我的应用程序路由中,我在控制器中设置了几个默认值,用于应用程序模板:
setupController(controller, model) {
this._super(controller, model);
controller.set('session', Ember.inject.service('session'));
controller.set('environmentName', ENV.environment);
},
我现在想要一个能够响应两个不同变量的计算器。这些变量将在冒充应用程序路径的操作中发生变化。
所以说它们是foo
和bar
,就路线本身而言是计算的。
someComputed: Ember.computed('foo', 'bar', function() {
let result = '';
// logic involving foo and bar
return result;
}),
问题是应用程序模板中没有此功能。如何以更好的方式向控制器“注册”计算,并响应更改foo
和bar
的应用程序路径操作?
答案 0 :(得分:4)
即使您没有明确创建controllers/application.js
文件,ember仍然会为您提供一个(并且您在setupController
挂钩中设置了它的属性)。您可以在控制器上设置计算值,而不是路径:
setupController(controller, model) {
this._super(controller, model);
controller.set('session', Ember.inject.service('session'));
controller.set('environmentName', ENV.environment);
controller.set('someComputed', Ember.computed('foo', 'bar', function() {
let result = '';
// logic involving foo and bar
return result;
})),
},
现在您应该可以访问模板中的{{someComputed}}
。
此时虽然我建议明确创建一个控制器并将其移动到那里。控制器还没有被杀掉,并且仍然是余烬设计策略的一个重要方面。
编辑:错过了一个结束括号。