所以我需要能够在ember中支持(有限)无限数量的视图。
基本上,我正在创建一个调查应用程序。调查可能有不确定的步数,因此未定义数量的视图/控制器。从服务器获取步骤数量,以及内容和把手模板(步骤中只有有限数量的可能内容类型),我需要某种方式来扩展不同调查的调查。所以基本上一个ember应用程序处理整个事情,我已经设法抽象我的代码用于渲染内容类型,这对于ember步骤无关紧要:我现在只需要支持无限数量的步骤< / p>
是否可以使用ember视图和控制器,但不是通过名称引用它们,而是通过array indice引用它们?通常你会去App.TestView = ...,和router.get('applicationController')。connectOutlet('test'),但是我可以使用App.AllView [0] = Ember.View.extend();和router.get('applicationController')。connectOutlet('test')[0]还是什么?然后我可以在开始时有一个for循环,它抓取包含内容类型和步骤数的调查数据,将其插入视图数组中,然后我们离开
可能还有其他方法可以实现这一点,因此任何解决方案都会很棒。创建新的ember应用程序不是一个选项,同一个应用程序需要为作为调查对象传入的任何内容提供服务。
答案 0 :(得分:5)
您可以创建包含不同步骤的视图类数组。您可以使用把手模板名称向阵列添加新视图。
App.surveyViews = [];
App.surveyControllers = [];
App.surveyViews['firstStep'] = Em.View.extend({ templateName: 'my-handlebars-template' });
App.surveyControllers['firstStep'] = Em.Controller.extend();
您的路线可以从路线开始,并使用该路线查找适用于connectOutlet的视图类和控制器。
step: Em.Route.extend({
route: '/:step',
connectOutlets: function(router, context) {
router.get('applicationController').connectOutlet({
viewClass: App.surveyViews[context.step],
controller: App.surveyControllers[context.step].create(),
context: {}
});
}
})
您可以为上下文等添加任何额外的逻辑,但这是基本的想法。