mrt:peity, как связаны данные

Я установил 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"
}
})

это больше не работает. может кто-нибудь поможет в этом?


Изменить: мне не нужно обтекать шаблон todoitem вокруг {{peity}} (пакет peity). Я думаю, что это нарушает эту иерархию. это работает, если я делаю это

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"]}
})

1 ответ

Есть две вещи, которые нужно проверить, прежде чем вы сможете посмотреть, как это работает:

Во-первых, прогнозы должны быть размещены в 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}}

Другие вопросы по тегам