当backbone应用程序加载时(对于我的应用程序,这意味着页面已加载),我需要初始收集数据,backbone文档说:
<script>
var accounts = new Backbone.Collection;
accounts.reset(<%= @accounts.to_json %>);
var projects = new Backbone.Collection;
projects.reset(<%= @projects.to_json(:collaborators => true) %>);
</script>
我不明白这个。这是否意味着我应该使用初始数据呈现页面,如
{{collection_initial_data}}
我在后台使用django,那么如何将上面的代码转换成django模板,例如
<script>
var accounts = new Backbone.Collection;
accounts.reset({{ @accounts.to_json }});
var projects = new Backbone.Collection;
projects.reset({{ @projects.to_json(:collaborators => true) }});
</script>
无论如何,我真的对获取骨干收集的初始数据感到困惑。
发布于 2013-04-24 23:03:44
当Backbone谈论bootstrapping时,他们谈论的是这样的:
http://documentcloud.github.io/backbone/#FAQ-bootstrap
换句话说,他们说您应该在Django HTML模板中的script标记内写出模型的内容。
例如,假设您的Django上下文有一个名为"foo_models“的变量,它包含所有foo模型的JSON表示。您可能希望编辑Django模板以执行以下操作:
<script>
var foo_models = new FooCollection({{foo_models}});
</script>
通过这种方式,您可以保证数据在加载时已在页面上就绪,并且您的JS代码可以使用JS foo_models
访问该数据。
现在,您的困惑似乎是如何首先使Django成为foo_models
的Python/Django变量。我建议在视图逻辑中这样做,而不是在模板中,因为在那里您可以使用Python及其库的全部功能来序列化JSON。但是,如果您确实想在视图中执行此操作,则可以使用与您指定的语法非常相似的语法来执行此操作;请查看此so问题的第二个答案:
https://stackoverflow.com/questions/16195361
复制相似问题