EmberJS没有将我的动态路线段传递给api

时间:2017-04-04 19:09:54

标签: ember.js ember-data

我有一个API(我在ASP.Net Web API中编写),它有一个返回状态的所有县的终点。

我的路线应如下所示:http://localhost:4200/counties/CAhttp://localhost:4200/counties/NY

我的API工作正常。

但是,我得到了:Error while processing route: counties Ember Data Request GET http://localhost:50523/api/counties returned a 404

我的路由器映射是:

// router.js
Router.map(function() {
  this.route('states');
  this.route('counties', {path : 'counties/:state'});
});

我也试过'counties/:fips' - fips是序列化程序中指定的primaryKey。对于它来说,'counties/:county_id''counties/:state_id'

// routes/counties.js is:
export default Ember.Route.extend({
  model(params) {
    return this.store.query('county', {state: params.state});
  }
});

// models/county.js:
export default DS.Model.extend({
  state: DS.attr('string'),
  countyName: DS.attr('string'),
  fips: DS.attr('string'),
});

请注意,状态路由和API工作正常。

编辑:基于评论@LUX我意识到我需要在测试路线之前连接一些东西。所以我修改了状态模板,为每个列出的状态包含一个链接,如下所示:

// templates/companies
{{#each model as |state|}}
<p>{{#link-to "counties" state.state}}{{state.state}} - {{state.stateName}}/link-to}}</p>
{{/each}}

我还修复了我的模型钩子(见上文)

现在,当我将鼠标悬停在链接上时,我会在浏览器的状态栏中找到正确的URL,但我仍然得到完全相同的错误。我再次查看了所有代码,与我正在研究的其他两个示例项目相比,我只是没有看到问题。

编辑:

这是我的适配器:

// adapters/application.js
import WebApiAdapter from 'ember-web-api/adapters/web-api';
import config from '../config/environment';

export default WebApiAdapter.extend({
  host: config.host,
  namespace: 'api'
});

1 个答案:

答案 0 :(得分:0)

为什么会这样?路由器用于ember路由,因此浏览器中的URL也是如此。不是您的API的网址。 动态细分将传递到您的model挂钩:

model(params) {
  console.log(params.state);
}

同样findAll是获取给定类型的所有记录。所以你应该使用query

model(params) {
  return this.store.query('county', { state: params.state });
}

现在您已在适配器中使用该状态,您可以提出正确的请求。