Meteor js中的Iron控制器无法访问this._id。如何获得身份证?

时间:2015-03-03 02:04:28

标签: javascript meteor iron-router

我在dashboard.html

中有这个
{{#each todos}}
  <li class="list-group-item">
      {{ task }}
      <button class="delete"> Delete</button>
  </li>
{{/each}}

在控制器dashboard.js中我有这个

DashboardController.events({
  'click .delete': function () {
    Meteor.call('ToDos.delete',this._id);
  }
});

没有Iron Controller我可以使用this._id在事件中访问集合的id,但是使用此设置它具有空值。任何想法如何在控制器中获取集合todo的id?

1 个答案:

答案 0 :(得分:1)

请执行以下操作。

DashboardController = RouteController.extend({
    template: 'layout',
    data: function () { return SomeCollection.findOne(); },
    waitOn: function() { return Meteor.subscribe('someCollection') }
});

DashboardController.events({
  'click .delete': function () {
   console.log(this.data())
   console.log(this.data()._id)//not sure if this works.
    Meteor.call('ToDos.delete',this.data());
  }
});

这里的关键是我们不需要{{#each}},你应该使用数据函数用数据填充模板。

如果你这样做,它将起作用。

Template.example.events({
'click .delete': function () {
       console.log(this.data()) //undefined
       console.log(this._id)//id
        Meteor.call('ToDos.delete',this._id);
      }
})