0

我从大气js安装了mrt:peity。我不确定数据是如何绑定的。从包文件中,它似乎期待帮助程序中的数据/图表。但是当我这样做时我注意到了

Template.todolist.helpers({
    todoitems: function(){
       return Todolist.find({"status":{"$ne":"validated"}}, {data:1, chart:1})
    }
});

它工作正常。但是当我这样做的时候

Template.todoitem.helpers({
data:function(){
    return [moment().diff(this.ts,"days"),this.eta]
},
chart:function(){
    return "pie"
}
})

它不再起作用了。有人可以帮忙吗?


编辑:我不需要在 {{peity}} (peity 包)周围包装 todoitem 模板。我认为它打破了这种等级制度。如果我这样做,它会起作用

Template.todolist.helpers({
  todoitems: function(){
    return _.map(Todolist.find({}).fetch(), function(v, k){
  return {chart:"pie", data:[moment().diff(v["ts"],"days"),v["eta"]], taskname:v["taskname"]}
})
4

1 回答 1

0

在让它工作之前,您需要检查两件事:

首先是需要放置的投影fields。(如果你需要这个。如果你使用它,其他字段将不起作用(如果你使用投影ts,它将被隐藏)eta

return Todolist.find({"status":{"$ne":"validated"}}, {fields:{data:1, chart:1}})

第二个是data保留关键字。你需要使用别的东西。您不能使用带有名称的助手,data因为它会与 Blaze 使用的内部数据上下文变量发生冲突。

查看您的代码很难说出您要做什么。我假设如果您需要使用[moment().diff(this.ts,"days"),this.eta],则不需要由以下给出的投影fields

some_other_word:function(){
    return [moment().diff(this.ts,"days"),this.eta]
},

然后使用{{some_other_word}}代替{{data}}

于 2015-04-15T16:39:48.460 回答