в моем проекте Angular 5 у меня есть некоторые проблемы с обратным вызовом из внешней библиотеки.Я загружаю его, используя
<script src="https://js.chargebee.com/v2/chargebee.js" data-cb-site="my-site"> </script>
, а затем в Angular импортирую его следующим образом:
declare var Chargebee: any;
Chargebee.init({site: "my-site"});
У меня также есть открытая переменная в моем компоненте, скажем, publicVar
, которую яЯ показываю в шаблоне.
publicVar: string = 'before checkout';
У меня есть следующий метод:
subscribeToPlan() {
var _self = this;
var chargebeeInstance = Chargebee.getInstance();
chargebeeInstance.openCheckout({
hostedPage: function() {
_self.publicVar = 'hosted-page';
console.log('hosted-page');
},
success: function(hostedPageId) {
_self.publicVar = 'success';
console.log('success');
},
close: function() {
_self.publicVar = 'closed';
console.log('closed');
}
});
}
Что происходит, когда я запускаю код?
Все console.log
функции выводят правильные данные, поэтому я знаю, что обратные вызовы Charbee вызываются.Однако только hostedPage: function() {}
правильно меняет мой publicVar
, и в моем шаблоне написано "hosted-page".
success: function(){}
и close: function(){}
не будет обновлять publicVar
в моем шаблоне.Я подозреваю, потому что это, в отличие от hostedPage
, методов обратного вызова и self.
в них имеет неправильный контекст?