Javascript 主干:预取集合

Javascript 主干:预取集合,javascript,json,backbone.js,Javascript,Json,Backbone.js,我有一个主干应用程序,它在加载时需要从四个不同的集合(Rails-->JSON后端)获取数据 这对服务器来说是四次点击,我猜还有更好的方法 我首先尝试将查询结果的Rails to_json()传递到Rails视图中的路由器初始化中,例如: <script type="text/javascript"> $(function() { window.router = new Backbonedemo.Routers.CalendarsRouter({calendars:

我有一个主干应用程序,它在加载时需要从四个不同的集合(Rails-->JSON后端)获取数据

这对服务器来说是四次点击,我猜还有更好的方法

我首先尝试将查询结果的Rails to_json()传递到Rails视图中的路由器初始化中,例如:

<script type="text/javascript">
  $(function() {
      window.router = new Backbonedemo.Routers.CalendarsRouter({calendars: [], tasks: <%= @tasks %>});
      Backbone.history.start();
      });
</script>

$(函数(){
window.router=new Backbonedemo.Routers.CalendarsRouter({calendars:[],tasks:});
Backbone.history.start();
});
但这并没有带来快乐


那么,在启动时运行等效的fetch()的正确方法是什么,而不必为我要收集的每个集合点击JSON?

我不知道Rails,但请参阅:


Accounts.reset();
项目。重置(正确)%>);

通常,我认为您需要创建集合对象,然后使用内联JSON数据重置它们。

我不知道Rails,但请参见:


Accounts.reset();
项目。重置(正确)%>);
通常,我认为您需要创建集合对象,然后使用内嵌JSON数据重置它们。

查看gem。它允许您定制json响应,定制程度远远高于常规的
to_json
所允许的程度

这里有一种基本的方法来设置一个项目,在这个项目中,您需要提前交付大量JSON:

首先,将控制器设置为在页面加载时提取数据,例如,PE
localhost:3000/home
将在home controller索引中查找:

class HomeController < ApplicationController
  def index
    @user = current_user
    render 'user.json' # this line is not actually required most of the time when using backbone and proper ajax/json requests
  end
end
这是一个相对花哨的rabl,它将在一个json对象中提供一组json,包括一组相关的记录

在加载主干的html视图中,需要将控制器的对象传递给部分:

# views/home/index.html.erb
<script type='text/javascript'>
    $(function() {
      window.router = new Backbonedemo.Routers.CalendarsRouter(<%= render('user.json.rabl', user: @user).html_safe -%>);
    Backbone.history.start();
  });
</script>
#views/home/index.html.erb
$(函数(){
window.router=new Backbonedemo.Routers.CalendarsRouter();
Backbone.history.start();
});
重述:

  • 控制器呈现常规
    html.erb
    视图(启动主干网的视图)
  • 该视图还呈现一个分部——该分部是一个严格返回JSON的
    rabl
    模板
  • 主干接收JSON并使用它做任何您想做的事情
  • 这样做的好处是,您可以为任何控制器操作设置json.rabl响应,并让它们返回各种json内容,所有这些都很容易控制。我在上面做的事情是“困难”部分,在第一次页面加载时,您希望将多个表中的内容加载到一个JSON调用中——避免多个AJAX/主干获取请求

    有道理吗?我希望如此如果有任何不清楚的地方,请告诉我。

    查看宝石。它允许您定制json响应,定制程度远远高于常规的
    to_json
    所允许的程度

    这里有一种基本的方法来设置一个项目,在这个项目中,您需要提前交付大量JSON:

    首先,将控制器设置为在页面加载时提取数据,例如,PE
    localhost:3000/home
    将在home controller索引中查找:

    class HomeController < ApplicationController
      def index
        @user = current_user
        render 'user.json' # this line is not actually required most of the time when using backbone and proper ajax/json requests
      end
    end
    
    这是一个相对花哨的rabl,它将在一个json对象中提供一组json,包括一组相关的记录

    在加载主干的html视图中,需要将控制器的对象传递给部分:

    # views/home/index.html.erb
    <script type='text/javascript'>
        $(function() {
          window.router = new Backbonedemo.Routers.CalendarsRouter(<%= render('user.json.rabl', user: @user).html_safe -%>);
        Backbone.history.start();
      });
    </script>
    
    #views/home/index.html.erb
    $(函数(){
    window.router=new Backbonedemo.Routers.CalendarsRouter();
    Backbone.history.start();
    });
    
    重述:

  • 控制器呈现常规
    html.erb
    视图(启动主干网的视图)
  • 该视图还呈现一个分部——该分部是一个严格返回JSON的
    rabl
    模板
  • 主干接收JSON并使用它做任何您想做的事情
  • 这样做的好处是,您可以为任何控制器操作设置json.rabl响应,并让它们返回各种json内容,所有这些都很容易控制。我在上面做的事情是“困难”部分,在第一次页面加载时,您希望将多个表中的内容加载到一个JSON调用中——避免多个AJAX/主干获取请求

    有道理吗?我希望如此如果有什么不清楚的地方,请告诉我