Ember.js 直接输入url时不调用路由挂钩
我面临着一个与灰烬路线有关的严重问题 当我试图通过指向帮助程序的Ember.js 直接输入url时不调用路由挂钩,ember.js,ember-data,ember-cli,Ember.js,Ember Data,Ember Cli,我面临着一个与灰烬路线有关的严重问题 当我试图通过指向帮助程序的链接显示单个项目时,它工作正常,并在路径中为note.index正确调用。但是当我直接在浏览器中输入URL(localhost:4200/assessment/1/note/1)时,不会调用路由钩子,它可能是“model”钩子或“setupController”钩子或任何其他钩子。 基本上,我想通过store.find向rails应用程序传递一些额外的参数 路由器.js @resource "assessment", path: '
链接显示单个项目时,它工作正常,并在路径中为note.index
正确调用。但是当我直接在浏览器中输入URL(localhost:4200/assessment/1/note/1
)时,不会调用路由钩子,它可能是“model”钩子或“setupController”钩子或任何其他钩子。
基本上,我想通过store.find
向rails应用程序传递一些额外的参数
路由器.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`
注意:我想向我的rails API传递一些额外的参数,这就是为什么我需要在获取项时调用钩子 灰烬版本是1.10.0。现在,当我在浏览器中输入url时,路由钩子就开始工作了,并且工作正常。实际上,我的路由文件是index.js,它出现在note/index.js
path中。我将index.js路由从note目录移动到“app/routes/”
目录,并将名称从index.js文件更改为note.js文件。因此,我的路由文件的新路径是app/routes/note.js。
它解决了我的问题,现在我的钩子工作正常,当我在broswer中输入direct url时调用
同样,我移动并更改控制器文件和模板文件的名称和路径。控制器从note/index.js
和note/index.hbs
到app/routes/note.js
,模板文件从app/templates/note.hbs 你是哪个版本的?目前不建议使用this.resource
。我也没有在应用程序中看到/assessment/1/note/1
路由,因为note
没有嵌套在assessment
下。可能不是您遇到的特定问题,而是controller.set(
model',`将为model
属性分配一个承诺,这可能不是您想要的。您需要在then
子句中进行设置,或者更可能在beforeModel
或afterModel
钩子中进行设置,在钩子中,余烬将为您解决该承诺。此外,您不需要return
在您的模型中
hook?@torazaburo-CoffeeScript(我假设使用的是代码)具有隐式返回。