现在,我正在我的 ember 应用程序中构建一个特定的屏幕,其中包含未知数量的嵌套组件。因此,我试图不根据正在显示的组件更改 url,还有一些我想在每个子屏幕上显示的基本信息。
目前,当真正的动作逻辑仅在路线上定义时,我似乎必须重新定义并在所有这些动作名称中传递所有这些动作名称。有没有办法在控制器或一个“父”组件中干燥这些动作引用。
这是一个示例 ember-twiddle,我将这些组件渲染到一个插座http://ember-twiddle.com/31a69c62ceddcb69b02b
这是路线的示例
import Ember from 'ember';
export default Ember.Route.extend({
_fixtureModels: [
{ person: {name: 'bill'}, sideModel: null},
{ person: {name: 'bill'}, sideModel: { postName: 'test post' }},
{ person: {name: 'bill'}, sideModel: { commentName: 'test comment'}}
],
_renderSideModel: function (template, sideModel) {
this.render();
this.render(template, {
outlet: 'side-model',
into: 'index',
model: sideModel
});
},
renderTemplate: function () {
this.render();
this.render('someComponentWrapper', {
outlet: 'side-model',
into: 'index'
});
},
model: function () {
return this._fixtureModels[0];
},
actions: {
renderTopLevel: function () {
return this.renderTemplate();
},
renderPost: function () {
return this._renderSideModel('post', this._fixtureModels[1]);
},
renderComment: function () {
return this._renderSideModel('comment', this._fixtureModels[2]);
}
}
});
我知道 URL 应该是 Ember 中的王者,这是非常有罪的,但是很难重建一个潜在的嵌套视图。