Не удается прочитать свойство ‘then’ неопределенного в angularjs

#angularjs #ionic-framework

#angularjs #ionic-framework

Вопрос:

я пытался создать простое приложение на ionic с asp.net mvc rest framework.но я получаю

Cannot read property 'then' of undefined

ошибка.вот мой app.js код.кто-нибудь может помочь ..?.часть контроллера показывает ошибку

 angular.module('starter', ['ionic', 'starter.controllers', '  starter.services'])
.constant('ApiEndpoint', {
    url: 'http://localhost:49316/api'
})
.run(function($ionicPlatform) {
    $ionicPlatform.ready(function() {
        if (window.cordova amp;amp; window.cordova.plugins.Keyboard) {
            cordova.plugins.Keyboard.disableScroll(true);
        }
        if (window.StatusBar) {
            StatusBar.styleDefault();
        }
    });
})
 angular.module('starter.services', [])
 factory('Api', function($http, ApiEndpoint) {
console.log('ApiEndpoint', ApiEndpoint)
var getApiData = function() {
    $http.get(ApiEndpoint.url   '/product')
        .success(function(data) {

        })
        .error(function(error) {
        })
}

return {
    getApiData: getApiData
};
  })
 angular.module('starter.controllers', [])
.controller('ExampleController', function($scope, Api) {
    $scope.getData = function() {
        Api.getApiData()
            .then(function(result) {
                $scope.data = result.data;
            })
    }
});
  

Ответ №1:

Вы уже возвращаете promise в приведенной ниже функции.

 var getApiData = function() {
    $http.get(ApiEndpoint.url   '/product')
        .success(function(data) {

        })
        .error(function(error) {
        })
 }
  

Измените нижеприведенную функцию на нижеприведенную следующим образом.

 var getApiData = function() {
    return $http.get(ApiEndpoint.url   '/product')
}
  

Ответ №2:

 factory('Api', function($http, ApiEndpoint) {
console.log('ApiEndpoint', ApiEndpoint)
var getApiData = function() {
$http.get(ApiEndpoint.url   '/product')
    .success(function(data) {

    })
    .error(function(error) {
    })
return {getApiData: getApiData}; // you forget return :)
}