簡體   English   中英

AngularJS承諾響應未定義

[英]AngularJS Promise Response Undefined

我已經閱讀了多篇關於在AngularJS中使用$promise文章,但仍然無法弄清楚為什么我的以下代碼出現錯誤:

控制器代碼:

eventsApp.controller('EventController',
    function EventController($scope, eventData) {
        $scope.sortOrder = 'name';
        eventData.getEvent().$promise.then(successOnGetEvent(event), errorOnGetEvent(response));

        function successOnGetEvent(event) {
            $scope.event = event;
            console.log(event);
        };

        function errorOnGetEvent(response) {
            console.log(response)
        };
    });

服務代碼:

eventsApp.factory('eventData', function($resource) {
    return {
        getEvent: function() {
            return $resource('/data/event/:id', {id:'@id'}).get({id:1});
        }
    }
});

在Chrome控制台窗口中,出現錯誤:

ReferenceError:未定義響應

您實際上是將函數的返回值傳遞給promise.then 您應該傳遞一個函數。 嘗試這個:

eventsApp.controller('EventController',
    function EventController($scope, eventData) {
        $scope.sortOrder = 'name';
        eventData.getEvent().$promise.then(function (event) { successOnGetEvent(event); }, function (response) { errorOnGetEvent(response); });

        function successOnGetEvent(event) {
            $scope.event = event;
            console.log(event);
        };

        function errorOnGetEvent(response) {
            console.log(response)
        };
});

我所做的只是添加一個包裝程序匿名函數,該函數運行您打算運行的代碼。 這意味着promise.then將收到一個功能。

在這條線...

eventData.getEvent().$promise.then(successOnGetEvent(event), errorOnGetEvent(response));

successOnGetEventerrorOnGetEvent將立即執行。 該錯誤是因為未在此上下文中聲明response (和event )。 嘗試只傳遞函數...

eventData.getEvent().$promise.then(successOnGetEvent, errorOnGetEvent);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM