虽然我试图按照教程,在using-and-creating-angularjs-pipes页面中,但是this.helpers不起作用,因为它只在绑定发生之前运行。
我不知道教程中是否有错误或者在编写教程后发生了变化。
当我尝试在this.helpers函数中执行console.info(绑定属性)时,结果是未定义的。 当我在$ onInit中执行相同的console.info时,它正在工作。
我怎样才能让它发挥作用?
代码基于教程中的代码https://angular-meteor.com/tutorials/socially/angular1/using-and-creating-angularjs-pipes
class PartyCreator{
constructor($scope){
'ngInject';
$scope.viewModel(this);
this.subscribe('users');
this.helpers({
creator: ()=> {
console.info(this.party) //returns undefined
if(!this.party){
return '';
}
const owner = this.party.owner;
if(Meteor.userId() !== null && owner === Meteor.userId()) {
return 'me';
}
return Meteor.users.findOne(owner) || 'nobody';
}
})
}
$onInit(){
console.info(this.party) //returns valid party object
}
}
答案 0 :(得分:0)
Helper多次运行,基本上每次数据更改或启用订阅时都会运行。您的代码应该允许不返回任何数据(通常是第一次)。
已经存在处理此案例的代码:
if(!this.party){
return '';
}
当它再次运行时,通常会给你你想要的东西