我已经使用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”}]}
答案 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"
}
]
}