获取所有文章都没问题,但是当尝试直接通过路径网址检索一篇文章时,系统错误 - 未定义
var articles = Ember.$.getJSON('http://localhost/emberdata/api/articles');
将返回:
[{"articles":
[
{
"id":1,
"title":"Ember is the best",
"author":"brk","excerpt":"Programming is awesome"
},
{
"id":2,
"title":"Backbone not a framework",
"author":"krb",
"excerpt":"Server-side controller sucks"
},
{
"id":3,
"title":"Javascript pwned",
"author":"rbk",
"excerpt":"I know right"
}
]
}]
使用PHP Slim Rest API
创建API此路线工作查找,显示车把模板中的所有数据
App.ArticlesRoute = Ember.Route.extend({
model: function() {
return articles;
}
});
但是对于子视图路由,返回undefined
App.ArticleRoute = Ember.Route.extend({
model: function(params) {
var article = articles.findBy('id', params.article_id);
console.log(article);
return article;
}
});
直接调用子视图网址无效:
http://localhost/emberdata/#/articles/1
但是,点击文章链接,这些子视图路径可以工作:
this.resource('article', { path: ':article_id' });
这是错误:
答案 0 :(得分:1)
Ember。$。getJSON()将返回一个promise(参见:http://emberjs.com/api/classes/Ember.PromiseProxyMixin.html)。你不能在promise上调用findBy()方法。
话虽如此,你自己也很难做到。我建议开始使用DS.RESTAdapter。在你的情况下,它将是这样的:
App.ApplicationAdapter = DS.RESTAdapter.extend({
namespace: 'emberdata/api'
});
然后清除(或删除)ArticlesRoute,因为您将使用约定(而不是配置):
App.ArticlesRoute = Ember.Route.extend({
});
对于ArticleRoute的同意。但是,如果您的后端不支持/ emberdata / api / article / 1等调用,请使用以下代码:
App.ArticleRoute = Ember.Route.extend({
model: function(params) {
var article = this.store.find('article').findBy('id', params.article_id);
console.log(article);
return article;
}
});