2014-11-30 2 views
1

У меня ошибка TypeError: Cannot read property 'success' of undefined при использовании $ http и моей пользовательской службы.

Моего app.js:

app.controller('AppCtrl', ['$scope', '$http', 'topicContent', function($scope, $http, topicContent){ 

    topicContent.request().success(function(data){ 
    $scope.threadContent = data; 
    console.log(data); 
    }); 

}]); 

app.factory('topicContent', ['$http', function($http){ 

    var query = function() { 
     return 
      $http({ 
      url: "http://www.corsproxy.com/daysof.me/lowyat/thread.php", 
      method: "GET" 
     }); 
    } 

    return { 
     request : function(){ 
      return query(); 
     } 


    } 
}]); 

Это так странно, я не мог найти какой-либо изъян его.

ответ

0

Проблема заключается в том, что этот код

var query = function() { 
    return 
     $http({ 
     url: "http://www.corsproxy.com/daysof.me/lowyat/thread.php", 
     method: "GET" 
    }); 
} 

эквивалентно следующему:

var query = function() { 
    return; 
     $http({ 
     url: "http://www.corsproxy.com/daysof.me/lowyat/thread.php", 
     method: "GET" 
    }); 
} 

за счет автоматической вставки точек с запятой в JavaScript. Обратите внимание, что после return есть точка с запятой ;. Таким образом, решение двигаться $http в той же строке после return заявления:

return $http({ ... }); 

Читайте о в каких ситуациях Javascript интерпретатор вставляет точку с запятой ; автоматически, например here. В вашем случае после return переводчик будет вставлять ;, что делает query функцией return undefined. Отсюда ошибка, которую вы получаете.

+0

ах большое вам спасибо! узнали что-то сегодня! –

Смежные вопросы