2016-01-26 3 views
0

Я использую ES6 с угловым JS 1.X. Всякий раз, когда я пытаюсь получить доступ к переменной уровня класса (объявленный в конструкторе) в функции с $resource.query обратного вызова, я получаю эту ошибку:

"TypeError: Cannot read property 'maxSize' of undefined".

например:

Конструктор:

constructor() { 
    this.invArr = [];  
    this.maxSize = 3;   
} 

Метод класса:

bindData(){ 
    this.invArr = this.invLookUpSvc.getPortalInvByProdNbrSum().query({ 
     rtbProductNbr: this.productNumber 
    }, function (data) { 
     if (angular.isDefined(data)) { 
      this.invArr = data; //this.invArr not found 
      console.log(this.maxSize); //this.MaxSize not found.     
     }    
    }); 
} 

ответ

0

Контекст this изменился в функции обратного вызова для this.invLookUpSvc.getPortalInvByProdNbrSum().query. Чтобы устранить это, вы должны привязать функцию обратного вызова к контексту this:

bindData(){ 
    this.invArr = this.invLookUpSvc.getPortalInvByProdNbrSum().query({ 
     rtbProductNbr: this.productNumber 
    }, function (data) { 
     if (angular.isDefined(data)) { 
      this.invArr = data; 
      console.log(this.maxSize);     
     }    
    }.bind(this)); 
} 
+1

Это проблема с вопросом. Ответ, о котором вы говорили, работал. Благодарю. – user2727885

+0

Вы можете отметить ответ так, как принято, так что любой другой, у кого есть такая же проблема, найдет его. – gnerkus

+0

это работало частично. любые изменения, сделанные в обратном вызове с помощью псевдонима vm, не отражают вид. Я попытался обновить vm.maxSize до 10. Я все еще получаю значение 3 в представлении, которое задано в конструкторе для переменной maxSize. – user2727885

 Смежные вопросы

  • Нет связанных вопросов^_^