推迟搜索直到模板加载

时间:2013-07-11 20:40:32

标签: javascript jquery ruby ember.js sinatra

我想向服务器发出请求,根据用户点击的内容(最近,趋势等)获取大量新闻文章。我希望能够在我等待来自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做的事情,那么那也没关系!

2 个答案:

答案 0 :(得分: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/

答案 1 :(得分:0)

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

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

然后在页面加载时,我调用一个围绕

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

简单! :)