有没有办法在Backbone中使用视图分段?我正在使用内置的Underscore模板,但没有太多文档。
如果没有,是否有任何标准/惯例或建议的方法?
答案 0 :(得分:5)
是的,我最近尝试过这个。请务必阅读Backbone文档,尤其是the View section。
例如,您有一个_new.jst.haml:
%form#story_form.new_story{method: "post"}
然后,您可以拥有一个包含表单元素的_form.jst.haml。在你的Backbone.View中,你可以先在el中附加新模板,然后使用Backbone的视图范围选择器(这是在他们的官方文档中,在“$(jQuery或Zepto)”部分下):
$(this.el).html(window.JST['stories/_new'](attrs));
...
this.$('#story_form').html(window.JST['stories/_form'](attrs));
我使用的是Rails,因此我最初阅读了使用Rails from this article的Backbone.js。在该文章末尾有一个指向第2部分的链接。我建议你跳过第一篇文章中的部分,他使用字符串连接来更新视图。此外,我的方法现在与他的方法完全不同,但我认为这是一个非常好的起点,而且我还没有自己的文章可供展示。
我的代码示例有点简短,但我想我不想在这里编写完整的教程。只是让我知道哪些不起作用,你认为哪一步缺失,我会更新答案。
答案 1 :(得分:5)
是的,您可以在模板中使用partials,而不必在View类中设置它们,您可以直接从模板中进行设置。这是一个简单的例子:
users.jst:
<ul>
<% _.each(users, function(user){ %>
<li>
<%= JST['user']({user: user}) %>
</li>
<% }); %>
</ul>
user.jst:
<%= user.get('name') %>
答案 2 :(得分:0)
有很多&#34;香草&#34; Backbone方法可以做到这一点,但我强烈建议您查看MarionetteJS,Backbone.CollectionView或Backbone.LayoutManager。例如,在渲染集合时会有很多事情要跟踪(删除子项时的绑定事件,选择器范围,保持排序顺序),并且不需要重新发明轮子。