我正面临着与Ember路由相关的严重问题。直接输入网址时不会调用路由钩子
当我尝试通过link-to
帮手显示单个项目时,它工作正常,并且note.index
正确调用的路由挂钩。但是,当我直接在浏览器中输入URL(localhost:4200/assessment/1/note/1
)时,路由挂接不会被调用,或者是“model”挂钩或“setupController”挂钩或任何其他挂钩。 基本上我想通过store.find
将一些额外的参数传递给我的rails应用程序。
Router.js
@resource "assessment", path: 'assessments/:assessment_id', ->
@route 'edit'
@resource "notes", ->
@route "new"
@resource "note", path: "note/:note_id", ->
@route 'edit'
音符/ index.js
`import Ember from 'ember'`
noteIndexRoute = Ember.Route.extend
model: (params)->
console.log('********************Model Hook******************')
assessment = @modelFor('assessment')
@store.find('note',params.note_id,assessment_id: assessment.get('id')});
setupController: (controller,model)->
@_super controller, model
console.log('********************Setup Contr Hook********************')
assessment = @modelFor('assessment')
controller.set("model",@store.find('note',model.id,assessment_id: assessment.get('id')});
`export default noteIndexRoute`
注:我想一些额外的参数传递给我的轨道API,这就是为什么我要打电话去钩取上项目。
你在哪个版本上?目前不推荐使用'this.resource'。 – locks
我的应用中也没有看到'/ assessment/1/note/1'路由,因为'note'没有嵌套在'assessment'下面。 – locks
也许不是你所遇到的具体问题,但是'controller.set('model','将给'model'属性分配一个承诺,这不是你可能想要的。你需要做set一个'then'子句,或者更可能的是,在一个'beforeModel'或'afterModel'钩子中执行,Ember将负责解决您的承诺。另外,您不需要在'model'中使用'return'钩? – 2016-03-04 13:51:20