2013-07-15 15 views
3

我有一个对象数组。说如何使对象数组成为反应性数据源?

var 
sidelist = [ 
    { 
    name:"asdf", 
    id:1234, 
    types:[...] 


    } 
]; 

每个对象都变成了盒子使用本网页上构建

Template.global.side = function(){ 
    var obj = [], m; 
    m = 1; 
    for (var i in sides){ 
     obj.push({ 
      index : m, 
      object : sides[i] 
     }); 
    } 

    return obj; 
} 

的HTML:

 {{#each side}} 
      <div class="span{{this.index}}" id={{this.object.id}}> 


        <div class="side-head">{{this.object.name}}</div> 

</template> 

有创建和推动新的功能对象放入数组中。当它们依赖的数组发生更改时,如何使页面的一行在页面上被动地更新?

所以,当我添加一个新的对象应该出现一个新的框。

回答

4

如果您更灵活要使用相关性,它可以是这样的:

var sidelist = ...; 
var sidelist_dep = new Deps.Dependency; 

 

Template.global.side = function(){ 
    sidelist_dep.depend(); 
    // Do your stuff here; 
    return ...; 
}; 

 

// Important: call this every time you change sidelist, 
// AFTER the change is made. 
sidelist_dep.changed(); 

 

参见:http://docs.meteor.com/#deps

+0

当我尝试这样做时,我得到“未定义不是函数”。 – Euphe

+0

什么时候?确定什么是未定义的。 –

+0

没关系。修复。 – Euphe

1

在几乎所有情况下,您都应该将对象放在Meteor Collection中,而不是作为响应对象的一部分的阵列。有许多原因,其中包括以下

  • 添加,删除,搜索和更新都将更快
  • 的反应将在单元级而非阵列
  • 流星不会重新渲染了整个组对象的东西时,添加或删除 - 只是改变
  • 您可以在集合定义排序次序,使得它远远超过一个固定的顺序
相关问题