我正在使用ReactiveVar。 onCreated
我设置了ReactiveVar with Meteor.Call
。当我尝试从event
更改我的反应变量时,我得到Exception in delivering result of invoking 'namelist'
希望我的代码能更好地解释我的问题。
模板:
<template name="Name">
{{#each list}}
Name : {{name}}
Age : {{age}}
{{/each}}
<button class="loadmore">Load More</button>
<template>
助手:
Template.Name.helpers({
'list': function(){
return Template.instance().list.get();
}
})
OnCreated:
Template.Name.onCreated(function () {
this.limit = new ReactiveVar(5);
this.skip = new ReactiveVar(0);
this.list = new ReactiveVar();
Meteor.call("namelist", Template.instance().skip.get(), Template.instance().limit.get(), function(error, result) {
if(error){
alert("Oops!!! Something went wrong!");
return;
} else {
this.list.set(result);
this.skip.set(this.limit.get());
this.limit.set(this.limit.get()+5);
return;
}
}.bind(this));
});
活动:
Template.Name.events({
'click .loadmore': function(event, template) {
Meteor.call("namelist", template.skip.get(), template.limit.get(), function(error, result) {
if(error){
alert("Oops!!! Something went wrong!");
return;
} else {
temp = template.list.get();
temp.push(result);
template.list.set(temp); // Here I am getting error of Exception in delivering result of invoking 'namelist'
template.skip.set(template.limit.get());
template.limit.set(template.limit.get()+5);
return;
}
});
}
});
答案 0 :(得分:2)
在不执行代码的情况下,我无法准确说明正在进行的操作,但可能是您的初始Meteor.call
并非将list
设置为数组。此外,temp
声明没有var
,因此它会泄漏到全局命名空间中。在您的事件处理程序中,您可以尝试编写此代码:
var temp = template.list.get() || [];
temp.push(result);
template.list.set(temp);