如何从ember.js中的.json文件中检索模型

Dha*_*dan 1 javascript json ember.js

以下是我的文件夹结构

Sample/
  css/
  js/
    libs/
    data/
        employees.json
    app.js
  index.html
Run Code Online (Sandbox Code Playgroud) app.js
App = Ember.Application.create({
  LOG_TRANSITIONS: true
});

App.Router.map(function(){
  this.resource("employees");
});

App.ApplicationAdapter = DS.RESTAdapter.extend({
  namespace: "localapps/EmberProjects/Sample/js/data",
  url: "employees.json"
});

App.Employee = DS.Model.extend({
  name : DS.attr("string")
});

App.EmployeesRoute = Ember.Route.extend({
  model: function() {
    return this.store.find("employee");
  }
});
Run Code Online (Sandbox Code Playgroud) employees.json
{
  "employees": [
    {
        "name": "Title 1"
    },
    {
        "name": "Title 2"
    }
  ]
}
Run Code Online (Sandbox Code Playgroud)

但是当我尝试从.json文件中获取数据时,ember.js会自动用""替换url中的.json.

原始取电话:

http://localhost/localapps/EmberProjects/Sample/js/data/employees.json
Run Code Online (Sandbox Code Playgroud)

但是ember试图从中获取数据

http://localhost/localapps/EmberProjects/Sample/js/data/employees
Run Code Online (Sandbox Code Playgroud)

因此,不会从适配器收到任何数据.

Tho*_*rus 6

@claptimes解决方案可能会有效,但它会复制原始实现,我认为这是一个不好的做法,因为你必须手动将它保持最新版本的ember数据:)

另外我注意到你正在设置url已被弃用一段时间的属性(https://github.com/emberjs/data/blob/eeb6162f65513caa19ce18887c3f4d1c2014d80c/TRANSITION.md#host-and-namespace-configuration).

这是一个调用_super并且不会覆盖完整方法的解决方案:

App.ApplicationAdapter = DS.RESTAdapter.extend({
  buildURL: function() {
    return this._super(...arguments) + '.json';
  }
});
Run Code Online (Sandbox Code Playgroud)