2

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

4

0 に答える 0