Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ember.js/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ember.js 路由未调用rest Web服务_Ember.js - Fatal编程技术网

Ember.js 路由未调用rest Web服务

Ember.js 路由未调用rest Web服务,ember.js,Ember.js,我已经开始了一个使用fixture适配器的简单示例。当我导航到我的路线/团队时,我可以看到我在适配器中注册的所有团队 现在,我更改了代码以注册默认的重新适应程序: Football.ApplicationAdapter = DS.RESTAdapter.reopen({ host: "http://localhost:8080/MatchService.svc/json" }); 当我现在导航到我的路线/团队时,我看不到任何错误,网站看起来应该是这样的,只是列表中没有列出任何团队 然后

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

现在,我更改了代码以注册默认的重新适应程序:

Football.ApplicationAdapter = DS.RESTAdapter.reopen({
    host: "http://localhost:8080/MatchService.svc/json"
});
当我现在导航到我的路线/团队时,我看不到任何错误,网站看起来应该是这样的,只是列表中没有列出任何团队

然后我开始查看网络流量:没有电话被发送,什么也没有

但是:当我尝试添加一个团队时(我还没有在rest服务中实现这个方法),我可以看到有一个调用将要进行 localhost:8080/MatchService.svc/json。。。 当然,我有一个404

但是我为什么不打电话反对呢 localhost:8080/MatchService.svc/json/teams 当我导航到我的团队路线时

这是我的路线:

Football.TeamsRoute = Ember.Route.extend({
  model: function() {
    return this.store.all('team');
  }
});
我已经从这个.store.find中更改了它。。。。到这个。商店。所有。。。因为在使用restadapter之后,我得到了一个“加载路由时出错:未定义”

我还添加了当前的ember.js版本作为来自ember站点的参考

这就是服务器返回的json:

{"TeamsResult":[
    {"ID":1,"Name":"Deutschland"},
    {"ID":2,"Name":"Frankreich"}
]}
我还尝试了来自WebService的未包装json结果:


{[{“ID”:1,“Name”:“Deutschland”},{“ID”:2,“Name”:“Frankreich”}]}

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

此外,您应该使用
extend
定义适配器:

Football.ApplicationAdapter = DS.RESTAdapter.extend({
    host: "http://localhost:8080/MatchService.svc/json"
});
重新打开
将其应用于创建的rest适配器的每个实例,这可能不合适

下面是一个小示例,展示了应用程序的基本结构:

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
余烬数据的预期响应:

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

谢谢您的回复。如果从服务器返回的json看起来不像ember所期望的,我该怎么办?我现在正在测试规范化。例如,我尝试Football.ApplicationSerializer=DS.RESTSerializer.extend({这里有normalize和normalizePayload的重写…但是似乎没有调用normalize函数。我的方法不对吗?您可以创建一个每类型序列化程序,将数据修复为Ember数据期望的格式。请阅读标记为Rest适配器和序列化配置的部分,这正是我一直在尝试的:Football.TeamSerializer=DS.RESTSerializer.extend({extractFindAll:function(store,type,payload){alert(payload);…但该警报从未触发…我认为,在调用路由中的查找时将调用此方法…我认为它似乎有效,但您应该使用
extractArray
(用于查找多条记录)和
extractSingle
(查找单个记录)可能是我把我的ember下载搞砸了。我不确定是否下载了data.js和ember.js的正确组合。这可能是我在这里挣扎的另一个原因。我将从您的示例中下载引用。