首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >通过浏览器URL提取Ember数据单个数据

问通过浏览器URL提取Ember数据单个数据
EN

Stack Overflow用户
提问于 2014-08-24 14:51:50
回答 1查看 210关注 0票数 0

获取所有文章是可以的,但是当尝试通过路由url直接检索一篇文章时,系统错误-未定义。

代码语言:javascript
复制
var articles = Ember.$.getJSON('http://localhost/emberdata/api/articles');

将返回:

代码语言:javascript
复制
[{"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"
     }
  ]
}]

API是使用PHP创建的

此路径工作查找,显示车把模板中的所有数据

代码语言:javascript
复制
App.ArticlesRoute = Ember.Route.extend({
   model: function() {
      return articles;
   }
});

但是,对于子视图路由,将返回未定义的

代码语言:javascript
复制
App.ArticleRoute = Ember.Route.extend({
   model: function(params) {
      var article = articles.findBy('id', params.article_id);
      console.log(article);
      return article;
   }
});

直接调用子视图URL不起作用:

代码语言:javascript
复制
http://localhost/emberdata/#/articles/1

然而,单击文章的链接,这些子视图路由可以工作:

代码语言:javascript
复制
this.resource('article', { path: ':article_id' });

这是一个错误:

​

​

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-08-24 15:35:56

Ember.$.getJSON()将返回一个承诺(参见:http://emberjs.com/api/classes/Ember.PromiseProxyMixin.html)。不能根据承诺调用findBy()方法。

话虽如此,你却让你自己变得很困难。我建议开始使用DS.RESTAdapter。在你的例子中,它应该是这样的:

代码语言:javascript
复制
App.ApplicationAdapter = DS.RESTAdapter.extend({
    namespace: 'emberdata/api'
});

然后清除(或删除) ArticlesRoute,因为您将使用约定(而不是配置):

代码语言:javascript
复制
App.ArticlesRoute = Ember.Route.extend({
}); 

ArticleRoute的调制解调器。但是,如果后端不支持/emberdata/api/code/1这样的调用,则使用以下代码:

代码语言:javascript
复制
App.ArticleRoute = Ember.Route.extend({
   model: function(params) {
      var article = this.store.find('article').findBy('id', params.article_id);
      console.log(article);
      return article;
   }
});
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25472931

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档