2012-05-17 43 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