![](/img/trans.png)
[英]Facebook chatbot with node, express.js, ngrok and Dialogflow
[英]Express.js + Facebook
我在尝试使此Express应用正常工作时遇到了问题。 我想在Facebook getLoginStatus函数内部的if分支中调用(response.status ==='connected')中的函数。 这是代码:
(function(){
var app = angular.module('AppProva', ['ngResource']);
app.controller('friendFetcherCtrl', ['$window', function($window){
this.getFriends = function(){
console.log('GETFRIENDS()');
};
this.login = function() {
console.log('LOGIN()');
$window.fbAsyncInit = function() {
FB.init({
appId: '****************',
xfbml: true,
version : 'v2.3'
});
FB.getLoginStatus(function(response) {
if (response.status === 'connected') {
console.log('Logged in.');
this.getFriends();
/*Facebook graph query*/
}
else {
FB.login(function() { /* Do something */ }, { scope : 'user_friends, public_profile' });
}
});
};
(function(d, s, id) {
var js, fjs = d.getElementsByTagName(s)[0];
if (d.getElementById(id)) {
return;
}
js = d.createElement(s);
js.id = id;
js.src = "//connect.facebook.net/en_US/sdk.js";
fjs.parentNode.insertBefore(js, fjs);
}(document, 'script', 'facebook-jssdk'));
};
}]);
})();
登录函数由div中的ng-init指令调用。 加载我的HTML页面时,出现错误“ TypeError:this.getFriends不是函数”。 也许问题是我在$ window中定义的函数内调用了this.getFriends()。 我怎样才能使事情正常?
预先感谢弗朗切斯科
编辑:我想我知道问题是“ this”关键字,但是如果没有它,我如何使它工作呢?
很简单 在FB.getLoginStatus
内部, this
指向其他内容。 解决方法:
(function(){
var app = angular.module('AppProva', ['ngResource']);
app.controller('friendFetcherCtrl', ['$window', function($window){
this.getFriends = function(){
console.log('GETFRIENDS()');
};
var self = this;
this.login = function() {
console.log('LOGIN()');
$window.fbAsyncInit = function() {
FB.init({
appId: '****************',
xfbml: true,
version : 'v2.3'
});
FB.getLoginStatus(function(response) {
if (response.status === 'connected') {
console.log('Logged in.');
self.getFriends(); //self will point to this in app.controller's function
/*Facebook graph query*/
}
else {
FB.login(function() { /* Do something */ }, { scope : 'user_friends, public_profile' });
}
});
};
(function(d, s, id) {
var js, fjs = d.getElementsByTagName(s)[0];
if (d.getElementById(id)) {
return;
}
js = d.createElement(s);
js.id = id;
js.src = "//connect.facebook.net/en_US/sdk.js";
fjs.parentNode.insertBefore(js, fjs);
}(document, 'script', 'facebook-jssdk'));
};
}]);
})();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.