Facebook JS と AngularJS を使用してアプリケーションを開発しています。まず、ログインして友達を取得し、リストに表示します。このコードでは、すべてが正常に機能しています。
var friendsController = app.controller(
"FriendsController",
function FriendsController($scope, friendsData, $location, $routeParams)
{
$scope.friendsData = friendsData.data;
$scope.params = $routeParams;
$scope.onClickFriend = function(friendId)
{
$location.path("friends/friend:" + friendId);
}
}
);
friendsController.loadFriends = function($q, $rootScope)
{
var deferred = $q.defer();
FB.api("/me/friends?fields=name,picture.type(square)", function(response)
{
$rootScope.$apply(deferred.resolve(response));
});
return deferred.promise;
}
ここで、友人の詳細を新しいビューに読み込みたいのでrouteProvider
、新しいコントローラーと新しい promise を使用して新しいルールを作成します。
var friendDetailController = app.controller(
"FriendDetailController",
function FriendDetailController($scope, friendData, $routeParams)
{
$scope.friendData = friendData;
$scope.params = $routeParams;
console.log(friendData);
}
);
friendDetailController.loadFriend = function($q, $route, $rootScope)
{
var deferred = $q.defer();
var friendUrl = $route.current.params.friendId.split(":")[1] + "?fields=id,name,picture.type(large)";
FB.api("/" + friendUrl, function(response)
{
$rootScope.$apply(deferred.resolve(response));
});
return deferred.promise;
}
問題は、私が入力していることですloadFriend
が、FB.api への呼び出しを行っていないようですFriendsController
。また、基本的に同じである で動作しているため、非常に奇妙です。
FriendDetail
実際、呼び出しを逆にすると (最初、その後、友人)、機能しているため、呼び出されないのは 2 番目の呼び出しのようですFriendDetail
。