Javascript 如何使用AngularJS获得承诺结果

Javascript 如何使用AngularJS获得承诺结果,javascript,angularjs,ajax,Javascript,Angularjs,Ajax,以下是用于从sharepoint检索信息的控制器。我可以看到条目data.d.UserProfileProperties.results[115].Value中有一个属性值需要在视图中呈现。如何从结果承诺中获得该值 (function() { 'use strict' var createPurchasingCardController = function($scope, $rootScope, $filter, $window, $location, $timeout, re

以下是用于从sharepoint检索信息的控制器。我可以看到条目
data.d.UserProfileProperties.results[115].Value
中有一个属性值需要在视图中呈现。如何从结果承诺中获得该值

(function() {
    'use strict'
    var createPurchasingCardController = function($scope, $rootScope, $filter, $window, $location, $timeout, requestService) {        

        $scope.actionTitle = "";
        $scope.counter = [];                      

        var getCurrentUserData = function () {

            var dfd = new $.Deferred();
            var queryUrl = _spPageContextInfo.webAbsoluteUrl + "/_api/SP.UserProfiles.PeopleManager/GetMyProperties";
            $.ajax({
                url: queryUrl,
                method: "GET",
                headers: { "Accept": "application/json; odata=verbose" },
                success: onSuccess,
                error: onError,
                cache: false
            });

            function onSuccess(data) {            
                dfd.resolve(data);                    
            }

            function onError(data, errorCode, errorMessage) {
                dfd.reject(errorMessage);
            }

            return dfd.promise();               
        }            

        var _init = function () {                
            $scope.counter = getCurrentUserData();
            console.log($scope.counter);
        }

        _init();

    }

    angular.module('myApp').controller('createPurchasingCardController', ['$scope', '$rootScope', '$filter', '$window', '$location', '$timeout', 'requestService', createPurchasingCardController]);
}());

我试着把它放到柜台上,但它没有出现。任何帮助都将不胜感激。

将您的响应对象分配给
$scope
对象

function onSuccess(data) {            
    $scope.promiseData = data
    dfd.resolve(data);                    
}

不要使用jQuery
.ajax
,而是使用$http服务:

function getCurrentUserData() {
    var queryUrl = _spPageContextInfo.webAbsoluteUrl + "/_api/SP.UserProfiles.PeopleManager/GetMyProperties";
    var promise = $http({
        url: queryUrl,
        method: "GET",
        headers: { "Accept": "application/json; odata=verbose" },
        cache: false
    }).then(function(response) {
        return response.data;
    }).catch(function(response) {
        console.log("ERROR", response);
        throw response;
    });

    return promise;               
} 
然后从返回的承诺中提取数据:

function _init() {                
    var promise = getCurrentUserData();

    promise.then(function(data) {
        $scope.counter = data;
        console.log($scope.counter);
    });     
}

_init();           
$http服务返回的承诺与AngularJS框架集成。只有在AngularJS执行上下文中应用的操作才会受益于AngularJS数据绑定、异常处理、属性监视等

有关详细信息,请参阅

您应该使用Angularjs服务。