所以,我正在寻找帮助让我的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')
提前感谢任何有关最佳方法的启示!
答案 0 :(得分:0)
不知道我改变了什么,但经过console.log
多次使用afterModel
挂钩设置controllerName
属性。我能够在renderTemplate
钩子中使用类似的方法根据模型的type
属性动态设置我的模板......