在运行其余代码之前使用Angular使用变量

时间:2016-12-16 11:11:57

标签: javascript angularjs facebook angularjs-scope

我知道问题是执行的顺序,范围触发异步并在处理完其余代码后加载数据。我有一个httpGET,它从Web服务获取信息,当用户点击Facebook共享按钮时,它在我的Facebook共享功能中。但是我尝试在httpget中添加一个手表和.then以及返回承诺,但我都无法开始工作。

所以我的想法如下:我有一个用户在Facebook上共享的CDImage,我有另一个目录,其中包含同一张CD的促销图片,而不是全部,所以httpGET检查如果promoteCDid存在,是否存在应使用CDPromotionalURL更新变量CDImage,而不是从CDImage获取标准URL,以便用户共享Promotional图像而不是默认CD封面。

到目前为止,问题是CDImage没有直接更改,并且console.log(CDImage)第一次显示CDCover,当您在几秒钟后单击按钮时CDImage显示CDPRomotionURL图像。

var CDPromotionalImageUrl = "EMPTY";

 $('#facebookshare').click(function () {

    $scope.GetCDdata = function () {

        $http({
            method: 'Get',
            url: "/GetCDPromotionImage?id_CD=" + promotionCDId,
        })
            .success(function (data, status, headers, config) {
                $scope.CDdata = data;
                CDPromotionalImage = $scope.CDdata[0].filename
                $scope.CDPromotionalImageUrl = "https://website.com/" + CDPromotionalImage          
            })
            .error(function (data, status, headers, config) {
                $scope.message = 'Unexpected Error';
            });
    };

        if (CDPromotionalImageUrl == "EMPTY") {
            CDImage = CDImage;
        } else {
            CDImage = CDPromotionalImageUrl;
        }

        console.log(CDImage)

    var $this = $(this);
    var urlShare = (window.location.href);
    var obj = {
        method: 'share',
        href: (urlShare),
        picture: (CDImage),
        title: 'The ' + CDName,
        caption: "As heard on website.com",
        description:(description)
    };
    function callback(response) {
        //alert("Post ID: " + response['post_id']);
    }

    FB.ui(obj, callback);

 });
$scope.GetCDdata();

0 个答案:

没有答案