2012-05-17 42 views
12

看起来像Backbone.view,流星和句柄在操纵DOM的一部分时具有重叠功能。我看着假设使用Backbone的ToDo应用程序,但实际上,它们只使用路由器。如何将骨干视图连接到流星车把模板?

骨干视图也处理模板...但它们听起来和流星模板有很大不同。此外,它看起来像骨干&流星可以更新模型更新的UI。

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

Backbone是否对Meteor App真的有用?可以骨干&把手杆共存吗? ,如果他们可以,在Meteor上下文中,如何将Backbone视图连接到句柄模板?

编辑:找到todo骨干的例子。这似乎也印证了,你可以去任何一种:

  • 流星+骨干+下划线模板
  • ...流星+车把

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

谢谢

回答

13

这很容易,没有比使用下划线模板更多的工作。下面是一个例子.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()); 
    } 
    }); 
} 

然后,可以使用路由器或其他视图来管理,当你想要显示的用户视图就像你会在任何其他Backbone.js应用程序。

关键是要使用Meteor.ui.render或其他Meteor.ui方法呈现HTML,以便它是被动的。

+0

谢谢一堆@Aaron –

+1

我想知道他们为什么把Backbone作为流星的一部分,这很混乱。 BB和M共享很多功能。在上面的例子中,我怎样才能使用BB.model并仍然将它看作是M.collection? –

+9

Meteor中的模型比Backbone提供的反应性和客户端的开箱即用同步功能要好得多,而Backbone的模型和集合概念大多是将调用结构化回服务器的方式,然后提供一种模板化的方式来构建基于事件的事件系统。所以虽然你可以将Meteor集合和模型改装成Backbone的,但我建议不要这样做。相反,按照它意图使用的方式使用Meteor。 – Aaron