【发布时间】:2014-11-13 19:22:33
【问题描述】:
所以,我正在寻找一些帮助,让我的 Ember 路由根据模型中的属性动态设置控制器/模板。基本上我正在从 Rails 加载一个基于 STI 的模型,然后我想通过利用控制器和模板来处理不同类型模型的不同功能来模仿 STI 所做的事情(数据结构对于所有类型)。
我尝试了一个afterModel 钩子,将一个计算属性传递给模型的controllerName 属性,以及我能想到的几乎所有东西。这是我正在尝试做的一个例子(当我这样做时浏览器会冻结):
App.Question = DS.Model.extend
type: DS.attr('string') # Can be 'MultipleChoiceQuestion' or 'ShortAnswerQuestion'
text: DS.attr('string')
App.MultipleChoiceQuestionController = Ember.ObjectController.extend()
App.ShortAnswerQuestionController = Ember.Object.Controller.extend()
App.QuestionRoute = Ember.Route.extend
model: (params) -> store.find 'question', params.question_id
afterModel: (question, transition) ->
type = question.get('type')
@set('controllerName', type)
我还尝试了以下变体:
App.QuestionRoute = Ember.Route.extend
model: (params) -> store.find 'question', params.question_id
controllerName: Em.computed 'currentModel', ->
@currentModel.get('type')
提前感谢您对最佳方法的任何启发!
【问题讨论】:
-
根据命名约定或问题路径应命名为
QuestionRoute,而不是QuestionRouter。是不是打错字了? -
谢谢你的发现 - 只是一个错字!
标签: ember.js