سؤال

لدي هذا الكود :

PostApp.factory('loadPage', function ($http) {
return {
    loadOtherPage: function (page, status, permition, order, cultureId) {
        $http({
            url: '/Administrator/Post/PagedIndex',
            method: "POST",
            data: { page: page, status: status, permition: permition, order: order, cultureId: cultureId }
        }).success(function(data) {
            return  data;
        });

    }
};

});

PostApp.controller('PostController',
function ($scope, $http, loadPage) {
    $scope.status = 'Published';
    $scope.permition = 'Global';
    $scope.order = 'Asscending';
    $scope.cultureId = 1;
    $scope.ListOfItems = [];
    $scope.start = 2;
    $scope.skip = 10;

    $scope.loaddata = function () {
        $scope.ListOfItems = loadPage.loadOtherPage($scope.start, $scope.status, $scope.permition, $scope.order, $scope.cultureId);
    };
}

);

لكن لا تقم بتعيين استجابة خدماتloadPage.loadOtherPage إلى متغير $scope.ListOfItems.الرد هو json في وحدة تحكم المتصفح:

[{"PId":15,"Id":15,"Status":"انتشار","Permition":"سراسری","PublishedDateEn":"08/19/2013","Title":"xxxxxxxxxxxx","CultureId":1,"Username":"naser","CommentCount":0},{"PId":16,"Id":16,"Status":"انتشار","Permition":"سراسری","PublishedDateEn":"08/19/2013","Title":"yyyyyyyyyyyyyyyyyy","CultureId":1,"Username":"naser","CommentCount":0},{"PId":17,"Id":17,"Status":"انتشار","Permition":"سراسری","PublishedDateEn":"08/21/2013","Title":"zzzzzzzzzzzzzzzz","CultureId":1,"Username":"naser","CommentCount":0}]

نطاق $.ListOfItems النهائي فارغ؟

هل كانت مفيدة؟

المحلول

(تم التعديل:إضافة متغيرات لمزيد من الوضوح)

ال loadOtherPage الدالة لا ترجع أي شيء، لهذا السبب $scope.ListOfItems فارغ.الطريقة الصحيحة للقيام بذلك هي شيء مثل:

loadOtherPage: function (page, status, permition, order, cultureId) {
    var httpPromise =  $http({
        url: '/Administrator/Post/PagedIndex',
        method: "POST",
        data: { ... }
    });
    return httpPromise;
}

أنت في الأساس تعيد الوعد بذلك $http يعود، يعود إلى المتصل.يجب أن تصبح وحدة التحكم الخاصة بك:

$scope.loaddata = function () {
    var loadPagePromise = loadPage.loadOtherPage( ... );
    loadPagePromise.success(function(data) {
        $scope.ListOfItems = data;
    });
};
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top