在html页面加载上加载backbone.js集合

时间:2012-02-23 12:45:16

标签: backbone.js

我对backbone.js网络应用程序的架构有疑问。假设您正在创建一个电影收藏webapp。您可以使用模型作为电影,也可以使用集合来收集电影。

该集合的视图基本上是li的负载。

为了使网页可以通过谷歌进行索引,您可以在没有javascript的情况下使用它,并在服务器端进行渲染。因此,在服务器端转到mydomain.com/12会为该集合构建html li元素。

如果您想使用backbone.js修改集合,则需要将数据加载到主干中。做这个的最好方式是什么?我能想到的两种方法是......

1)使用jquery迭代将数据读入骨干的li元素 - 这个问题是html可能只包含电影名称,而不是骨干模型中可能需要的电影ID /导演信息。我想数据可以包含在html中并使用css隐藏。

2)扔掉列表中的所有内容并使用ajax从服务器重新加载 - 这对我来说似乎很浪费,因为所有数据都可以在第一页加载时发送。

这些方法中的任何一种都是良好的做法吗?如果没有,应该怎么做?

1 个答案:

答案 0 :(得分:3)

Backbone的作者Jeremy Ashkenas建议您在页面中将模型数据打印为JSON,并将其作为对象加载:

<script>
  Accounts.reset(<%= @accounts.to_json %>);
  Projects.reset(<%= @projects.to_json(:collaborators => true) %>);
</script>

请参阅Backbone FAQ - Loading Bootstrapped Models