Route不会调用rest webservice

时间:2014-04-27 07:26:40

标签: ember.js

我已经使用fixture适配器开始了一个简单的例子。当我导航到我的路线/团队时,我可以看到我在我的适配器中注册的所有团队。

现在我更改了我的代码以注册默认的restadapter:

Football.ApplicationAdapter = DS.RESTAdapter.reopen({
    host: "http://localhost:8080/MatchService.svc/json"
});

当我现在导航到我的路线/团队时,我看到没有错误,网站看起来应该是这样,只是列表中没有列出任何团队。

然后我开始看看网络流量:没有呼叫被发送,没有。

但是:当我尝试添加一个团队时(我还没有在休息服务中实现这个方法),我可以看到有一个电话要去     本地主机:8080 / MatchService.svc / JSON ... 当然,我得到了404.

但为什么我不打电话     本地主机:8080 / MatchService.svc / JSON /支 当我导航到我的团队路线时?

这是我的路线:

Football.TeamsRoute = Ember.Route.extend({
  model: function() {
    return this.store.all('team');
  }
});

我已经将它从this.store.find ....更改为this.store.all ...因为在使用restadapter之后我在加载路径时出现“错误:undefined”。

我还从ember站点添加了当前的ember.js -Version作为参考。

这是由服务器返回的json:

{"TeamsResult":[
    {"ID":1,"Name":"Deutschland"},
    {"ID":2,"Name":"Frankreich"}
]}

我还尝试了一个来自WebService的未包装的json结果:

{[{ “ID”:1, “名称”: “德国”},{ “ID”:2 “名称”: “Frankreich”}]}

1 个答案:

答案 0 :(得分:1)

all没有对服务器进行调用,它只返回已经获取客户端的所有记录。你应该使用this.store.find('team')

此外,您应该使用extend

定义适配器
Football.ApplicationAdapter = DS.RESTAdapter.extend({
    host: "http://localhost:8080/MatchService.svc/json"
});

reopen将其应用于由其余适配器创建的每个实例,这可能不合适。

这是一个显示应用基本结构的小例子:

Football = Ember.Application.create();

Football.Router.map(function() {
  this.resource('teams', {path:'/teams'});
});

Football.TeamsRoute = Ember.Route.extend({
  model: function() {
    return this.store.find('team');
  }
});


Football.ApplicationAdapter = DS.RESTAdapter.extend({
    host: "http://localhost:8080/MatchService.svc/json"
});

Football.Team = DS.Model.extend({
    name: DS.attr()
});

为了方便起见,我嘲笑了对http://localhost:8080/MatchService.svc/json/teams的调用以及Ember Data期待作为回应的内容:

  {
    teams:[
      {
        id: 1,
        name: "Miami Heat"
      },
      {
        id: 2,
        name: "Seattle Seahawks"
      },
      {
        id: 3,
        name: "Texas Longhorns"
      }
     ]
  }

http://emberjs.jsbin.com/OxIDiVU/425/edit