我有一个由自耕农生成的角度应用程序,它有两页。 我为这两个页面设置了一个routeProvider:
angular.module('fbPostApp', [
'ngCookies',
'ngResource',
'ngSanitize',
'ngRoute'
])
.config(function ($routeProvider) {
$routeProvider
.when('/', {
templateUrl: 'views/main.html',
controller: 'MainCtrl'
})
.otherwise({
redirectTo: '/'
});
$routeProvider
.when('/friend-filter', {
templateUrl: 'views/friend-filter.html',
controller: 'FriendFilterCtrl'
})
.otherwise({
redirectTo: '/'
});
});
MainCtrl:
function MainCtrl($scope,$http) {
window.fbAsyncInit = function() {
FB.init({
appId : 'Myid',
status : true, // check login status
cookie : true, // enable cookies to allow the server to access the session
xfbml : true // parse XFBML
});
$scope.login = function(){
FB.login(function(response) {
$scope.uid = response.authResponse.userID;
$scope.accessToken = response.authResponse.accessToken;
login_success($scope.uid,$scope.accessToken);
});
}
................
};
};
};
FriendFilterCtrl:
function FriendFilterCtrl($scope,$http) {
window.fbAsyncInit = function() {
FB.init({
appId : 'Myid',
status : true, // check login status
cookie : true, // enable cookies to allow the server to access the session
xfbml : true // parse XFBML
});
$scope.login = function(){
FB.login(function(response) {
$scope.uid = response.authResponse.userID;
$scope.accessToken = response.authResponse.accessToken;
login_success($scope.uid,$scope.accessToken);
});
}
................
};
};
}
我的链接:
<a href="#/main">Main</a>
<a href="#/friend-filter">Friend</a>
当我进入这两个页面时,他们的控制器工作得很好(使用你的Facebook登录)。但是,如果我通过链接“切换”到另一个页面,我可以获得页面的模板,但它不会做任何事情。 所以我想问一下,在这种情况下,我有什么错过或做错了吗?
答案 0 :(得分:0)
将此代码放在任何角度控制器之外:
window.fbAsyncInit = function() {
FB.init({
appId : 'Myid',
status : true, // check login status
cookie : true, // enable cookies to allow the server to access the session
xfbml : true // parse XFBML
});
};
您的控制器现在应该如下所示:
angular.module('fbPostApp').controller('MainCtrl', ['$scope','$http', function ($scope,$http) {
$scope.login = function(){
FB.login(function(response) {
$scope.uid = response.authResponse.userID;
$scope.accessToken = response.authResponse.accessToken;
login_success($scope.uid,$scope.accessToken);
});
}
................
}])
注意:如果您有全局Facebook登录按钮,则不应将$scope.login
功能复制到应用中的每个控制器。了解angular directives。