如何在onRendered中的meteor调用中访问meteor ReactiveVar变量

Pra*_*ini 5 javascript meteor

我想在onRendered中获取ReactiveVar变量获取错误在传递调用'getUsersData'的结果时出现异常:TypeError:无法读取null的属性'userData'

    Template.editAdmin.onCreated(function() {
     this.userData = new ReactiveVar([]);
   });

   Template.editAdmin.onRendered(function() {
     Meteor.call("getUsersData", this.data, function(err, result) {
        Template.instance().editAdminId.set(result);
      });
   });
Run Code Online (Sandbox Code Playgroud)

hwi*_*son 1

您的代码示例似乎与您的错误消息不一致。你提到的错误是:

TypeError: Cannot read property 'userData' of null
Run Code Online (Sandbox Code Playgroud)

但通过查看您的代码示例,我可以看到错误实际上是:

TypeError: Cannot read property 'editAdminId' of null
Run Code Online (Sandbox Code Playgroud)

我假设您希望它与 一起使用userData,所以我将相应地调整您的代码。基本上,您需要确保Template.instance()在方法回调中使用时正确利用 javascript 闭包。例如:

Template.editAdmin.onCreated(function () {
  this.userData = new ReactiveVar([]);
});

Template.editAdmin.onRendered(function () {
  const instance = Template.instance();
  Meteor.call("getUsersData", this.data, function (err, result) {
    instance.userData.set(result);
  });
});
Run Code Online (Sandbox Code Playgroud)

  • 另外,“onCreated”和“onRendered”中的“this”等于“Template.instance()”。 (3认同)