12

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

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

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

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

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

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

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

谢谢

4

1 回答 1

13

这比使用 Underscore 模板非常简单,不需要更多的工作。这是一个示例 .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,使其具有反应性。

于 2012-05-17T09:42:24.757 回答