2016-11-13 4 views
0

У меня есть проблемы с facebook API,Вызова функция внешней угловая 2

Я хотел бы вызвать функцию, но я нахожусь в функции Facebook.api поэтому моя функция не признается, потому что я воплощен в Объект Facebook. Вот мой код:

export class MyClass { 

constructor(platform:Platform) { 
} 
function1(number_likes:number) { 
     var elem = document.getElementById('number_of_likes'); 
     elem.innerHTML = ""+number_likes; 
    } 

query_fan_numbers() { 
     var pageId = "81221197163?fields=fan_count"; 
     Facebook.api(pageId, null) 
     .then(function(success) { 
     this.function1(parseInt(JSON.stringify(success.fan_count))); //Here's the error 
     } 
    } 

Моя ошибка, что-то вроде: TypeError: Cannot read property 'function1' of null

Как я могу вызвать функцию function1 в моем классе?

+2

Почему вы используете 'function (success) {' rather than '(success) => {', который * будет * связывать 'this'? – jonrsharpe

ответ

1

Как @jonrsharpe упоминалось

Вы можете использовать жирную стрелку:

query_fan_numbers() { 
     var pageId = "81221197163?fields=fan_count"; 
     Facebook.api(pageId, null) 
     .then((success)=> { 
     this.function1(parseInt(JSON.stringify(success.fan_count))); //Here's the error 
     } 
    } 

или старый добрый трюк яваскрипта для хранения this в переменной, чтобы использовать позже.

query_fan_numbers() { 
     var that = this; 
     var pageId = "81221197163?fields=fan_count"; 
     Facebook.api(pageId, null) 
     .then(function(success) { 
     that.function1(parseInt(JSON.stringify(success.fan_count))); //Here's the error 
     } 
    } 
+1

Хорошо, спасибо, сейчас работает :) –

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