In latest Ember, how do you link to a route with just the id/name of a model, rather than providing all of its attributes in the linking page?

那年仲夏 提交于 2019-12-02 20:46:56

It seems like the model hook for App.BirdRoute never gets called when navigating using {{#linkTo}}... maybe this is because using {{#linkTo}} you are passing an object to the route from the birds route and ember doesn't think you should need to call model since it thinks the id has already been deserialized into an object. This seems to make sense since model gets called when you reload the page.

I used the setupController hook to call your App.Bird.find() method and pass that result into the controller. This gets called by either a direct URL or through a {{#linkTo}} click. If called by the {{#linkTo}} helper link setupController the model parameter will be the bird object passed with the {{#linkTo}} helper. If called directly from the URL the returned value from the model hook will be passed into setupController as the model parameter.

Here is a JSFiddle example

example with accessible URL

App.BirdRoute = Ember.Route.extend({
  model: function(params) {
    return {id: params.bird_id};
  },
  setupController: function(controller, model) {
    var bird_model = App.BirdTest.find(model.id);
    controller.set("content", bird_model);
  }
});
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!