2017-01-02 33 views
0

虽然我正在尝试按照教程,在using-and-creating-angularjs-pipes页面中,this.helpers不工作,因为它仅在绑定发生之前运行。在angular-meteor组件上进行绑定

我不知道这是教程中的错误还是教程写入后发生了变化。

当我尝试在this.helpers函数中执行console.info(binding property)时,结果是未定义的。 当我在$ 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

您还没有订阅派对 – Mikkel

回答

0

助手运行多次,基本上每一次的数据变化,或当启用了订阅。你的代码应该允许没有数据返回的可能性(通常是第一次)。

有代码已经存在处理这种情况下:

 if(!this.party){ 
      return ''; 
     } 

当再次运行时,它通常会给你你所期望的