来自调用 this.call 的 Angular2 Meteor 绑定数据
Angular2 Meteor Bind Data from calling this.call
方法
Meteor.methods({
'test' : function(test: string) {
return test;
}
})
组件
我的 Class 扩展 MeteorComponent
show: string;
constructor() {
this.call('test', 'txt', (err, res) => {
this.show = res
});
}
查看
<span>{{show}}</span>
它什么也没显示,正如我预期的那样它会显示 'txt'。
不像autorun
,call
没有参数告诉它在NgZone
里面的运行,所以Angular的变化检测不会'不踢了。
你需要这样写:
constructor(zone: NgZone) {
this.call('test', 'txt', (err, res) => {
zone.run(() => {
this.show = res;
});
});
}
只需为@Martin C. 的回答添加解释即可。
在 Angular2-Meteor 0.5.6(尚未发布到 NPM)中,您应该可以使用 autoBind
。
this.call('test', 'txt', (err, res) => {
this.show = res;
}, true); // set `autoBind` to `true` here
方法
Meteor.methods({
'test' : function(test: string) {
return test;
}
})
组件
我的 Class 扩展 MeteorComponent
show: string;
constructor() {
this.call('test', 'txt', (err, res) => {
this.show = res
});
}
查看
<span>{{show}}</span>
它什么也没显示,正如我预期的那样它会显示 'txt'。
不像autorun
,call
没有参数告诉它在NgZone
里面的运行,所以Angular的变化检测不会'不踢了。
你需要这样写:
constructor(zone: NgZone) {
this.call('test', 'txt', (err, res) => {
zone.run(() => {
this.show = res;
});
});
}
只需为@Martin C. 的回答添加解释即可。
在 Angular2-Meteor 0.5.6(尚未发布到 NPM)中,您应该可以使用 autoBind
。
this.call('test', 'txt', (err, res) => {
this.show = res;
}, true); // set `autoBind` to `true` here