我的项目是使用ember-cli和ES6导入方法的ember.js。
此问题是关于将子资源new
的{{1}}路由呈现到应用程序dataset
中,而数据集上的其他路由(显示)呈现为{{ outlet 'sidebar' }}
application.hbs
{{ outlet 'main' }}
router.js
<div class="col-xs-8">
Outlet Main
{{liquid-outlet "main"}}
</div>
<div class="col-xs-4">
Outlet Sidebar
{{liquid-outlet "sidebar"}}
</div>
routes / organization.js:
this.resource('organizations', function() {
this.route('new');
this.resource('organization', { path: '/:organization_id' }, function() {
this.route('edit');
this.resource('datasets', function() {
this.route('new');
this.resource('dataset', { path: '/:dataset_id' }, function() {
this.route('edit');
});
});
});
});
目前,我在尝试此代码时遇到此错误:
import Ember from 'ember';
export default Ember.Route.extend({
renderTemplate: function() {
//render into application so organizations template doesn't show
this.render('organization', {
into: 'application',
outlet: 'main',
controller: 'organization'
});
// **** Not working but roughly what I want to do
this.render('organization.datasets.new', {
into: 'application',
outlet: 'sidebar',
controller: 'organization.datasets.new'
});
// ******
}
});
我的理解是,任何子资源路线都应在父母路线中确定。真正? 如何让ember识别控制器?我猜我的语法错了...... 谢谢您的帮助。
答案 0 :(得分:0)
你试过这个吗?
this.render('organization/datasets/new', {
into: 'application',
outlet: 'sidebar',
controller: 'organization/datasets/new'
});
使用&#34; /&#34;而不是&#34;。&#34;。
答案 1 :(得分:0)
就纯语法而言,我做错了是指定organization.datasets.new
而不只是datasets.new
。 this.resources
创建一个新的命名空间,因此您无需指定组织。事实证明this.resource
已被弃用,无论如何都支持this.route
。
至于实际做我想做的事情,我将不得不压扁我的路线。当我找出一个按照我想要的方式工作的平面层次结构时,会发布更好的答案。