如何将主干视图连接到流星车把模板?

Posted

技术标签:

【中文标题】如何将主干视图连接到流星车把模板?【英文标题】:How to wire a Backbone View to a meteor handlebars template? 【发布时间】:2012-05-24 15:33:13 【问题描述】:

看起来 Backbone.view、meteor 和 handlebars 在操作 DOM 的一部分时具有重叠功能。我查看了假设使用 Backbone 的 ToDo 应用程序,但实际上,它们只使用路由器。

主干视图也处理模板...但它们听起来与流星模板非常不同。此外,看起来骨干网和流星都可以在模型更新时更新用户界面。

好吧,我迷路了!?谁做什么?

Backbone 对 Meteor 应用程序真的有用吗? Backbone 和 Handle bar 可以共存吗? 如果可以的话,在 Meteor 上下文中,如何将 Backbone 视图连接到车把模板?

编辑:找到 todo-backbone 示例。它似乎证实你可以去:

流星+主干+下划线模板 或者...流星+车把

流星+骨干+车把似乎不是一个可行的选择......

谢谢

【问题讨论】:

【参考方案1】:

这比使用下划线模板非常简单,而且不需要更多工作。这是一个示例 .html 文件:

<template name="user_list">
<ul>
  #each users
  <li>name</li>
  /each
</ul>
</template>

这是一个示例 .js 文件:

Users = new Meteor.collection("users");

if (Meteor.is_client) 
  Template.user_list.users = function() 
    return Users.find();
  

  window.UserView = Backbone.View.extend(
    initialize: function() 
      _.bindAll(this, 'render');
    ,
    template: function() 
      Meteor.ui.render(function() 
        return Template.user_list();
      );
    ,
    render: function() 
      $(el).empty().append(this.template());
    
  );

然后,您可以使用路由器或其他视图来管理何时要显示 UserView,就像在任何其他 Backbone.js 应用程序中一样。

关键是使用 Meteor.ui.render 或其他 Meteor.ui 方法来渲染 HTML,使其具有响应性。

【讨论】:

我想知道他们为什么把 Backbone 作为流星的一部分,这很令人困惑。 BB 和 M 有很多共同点。在上面的示例中,如何使用 BB.model 并仍然将其视为 M.collection ? Meteor 中的模型比 Backbone 提供的响应性和开箱即用的跨客户端同步功能要全面得多,而 Backbone 的模型和集合概念主要是一种构造回调到服务器然后提供的方法一种构建基于事件的系统的模板方式。因此,尽管您可以将 Meteor 系列和模型改装到 Backbone 中,但我建议您不要这样做。相反,请按照预期的方式使用 Meteor。

以上是关于如何将主干视图连接到流星车把模板?的主要内容,如果未能解决你的问题,请参考以下文章

如何从车把模板访问主干模型的计算字段?

如何从车把模板访问主干模型的计算字段?

如何将我的主干模型连接到视图?

带有主干模板的车把未渲染

在主干视图中显示两个模型?

将模板中写入的数组传递给流星/车把助手