Meteor:根据控制器

时间:2015-07-17 04:19:27

标签: meteor controller iron-router

嗨,我有这条路线

#CoffeeScript
    Router.route 'tests/:slug/:type/question/add',
      name: 'addQuestion'
      controller: testsAddQuestionController

我有这个控制器

@testsAddQuestionController = testsQuestionsController.extend
  template: 'mcqQuestionForm'
  data: ->
    questions: TestQuestions.find()  
    test: Tests.findOne slug: this.params.slug

我想从控制器中选择模板,取决于:type parammeter,我尝试了两种方法:

@testsAddQuestionController = testsQuestionsController.extend
  template: if this.params.type is 'mcq' then 'mcqQuestionForm' else 'somethingelse'
  data: ->
    questions: TestQuestions.find()  
    test: Tests.findOne slug: this.params.slug

但是使用这种方法我得到错误this.params is undefined

第二种方法

 @testsAddQuestionController = testsQuestionsController.extend
      template: if Router.current().route.params.type is 'mcq' then 'mcqQuestionForm' else 'somethingelse'
      data: ->
        questions: TestQuestions.find()  
        test: Tests.findOne slug: this.params.slug

但appciation崩溃了这种方法,是否有人知道如何访问路由参数以便从控制器中为选择模板制定这个条件?

1 个答案:

答案 0 :(得分:1)

以下是我们的控制器的样子:

_dbFactory

出于某种原因(不知道为什么)如果我将当前的路由器参数保存到变量中,然后将该变量用于if语句,那么它就可以工作。

希望这会对你有所帮助。