1

我想根据用户点击的内容(最近、趋势等)向服务器发出请求以获取一堆新闻文章。我希望能够先加载页面并在等待 API 响应时显示加载栏。我所拥有的,虽然它可以工作并返回我需要的 JSON 数据,但会等到响应从服务器返回,然后再加载任何内容。到目前为止,这就是全部:

我想要实现的是:加载一个空的对象数组,然后逐步对文章进行 API 调用(假设从这个小时、最后一个小时、前一个小时等获取所有文章)和每当我检索文章时都会填充视图(我假设我可以以某种方式将它们注入控制器)但是我迷失了关​​于如何添加到该对象数组的 Emberisms。我想我需要制作一个 ArrayController,然后在所述数组中创建一个模型,然后调用一个函数来添加它,但是正如我所说,我不知道如何在运行中将项目添加到该控制器中

App = Ember.Application.create();

App.Router.map(function() {
  this.resource('today');
});

App.TodayRoute = Ember.Route.extend({
     model: function() {
        return $.getJSON('/today');
     }
});

为了详细说明我的问题的原因 - 我对如何用 ember 处理这个问题感到困惑。我很熟悉如何使用 jquery 来做这样的事情,但是我正在尝试学习框架并且在最初知道两者之间的分工是什么时遇到了一些麻烦。我知道实际的 AJAX 请求应该是 jquery,但我想在 Ember 中做尽可能多的事情。但是,如果这是应该由 jquery 完成的事情,那也很好!

4

2 回答 2

0

getJSON 方法看起来有一个你可以使用的成功回调函数,可能是这样的?

App.TodayRoute = Ember.Route.extend({
     model: function() {
        $.getJSON('/today', function(data) {
           // hide loading here
           / data is the JSON returned
        });
     }
});

查看此链接http://api.jquery.com/jQuery.getJSON/

于 2013-07-11T21:00:17.863 回答
0

我找到了解决方案 - 就像所有带有 ember 的东西一样,它非常简单。我使用了一些空白夹具数据,然后将我的控制器定义如下。

App.ArticleRoute = Ember.Route.extend({
  model: function() {
    return App.Article.find();
  }
})

然后在页面加载时,我调用一个专注于

App.Article.createRecord({
    // Attributes, pulling from the returned JSON
})

简单的!:)

于 2013-07-14T18:45:15.577 回答