【问题标题】:Angular JS $http is not defined in scopeAngular JS $http 未在范围内定义
【发布时间】:2013-07-28 11:55:58
【问题描述】:

过去几天我一直在检查 AngularJS,但遇到了一个问题。我正在尝试使用$http.jsonp 从 Soundcloud API 获取信息....但是在我看来 $http 没有在$scope 中定义。以下是控制台告诉我的内容:

Uncaught ReferenceError: $http is not defined main.js:18
(anonymous function) main.js:18
(anonymous function) sdk.js:1
window.SC.SC.Helper.merge.Dialog.AbstractDialog.AbstractDialog.handleReturn sdk.js:1
window.SC.SC.Helper.merge.Dialog._handleDialogReturn sdk.js:1
window.SC.SC.Helper.merge.connectCallback

这是我在main.js拨打电话的地方

angular.module('soundSelectahApp')
  .controller('MainCtrl', function ($scope) {
    $scope.apiKey = "#############################";
    $scope.results = [];
    $scope.init = function(){
        SC.initialize({
        client_id: $scope.apiKey,
        redirect_uri: "http://localhost:9000/callback.html"
        });
    // initiate auth popup
    SC.connect(function() {
        SC.get('/me', function(me) { 
        alert('Hello, ' + me.username); 
    });

    $http.jsonp('https://api.soundcloud.com/me.json?client_id=' + $scope.apiKey + '&callback=JSON_CALLBACK').success(function(data) {
        console.log(data);
    }).error(function(error) {
        console.log(error);
    }); 
  });
 };
});

我是否忽略了什么?我不应该在我的$scope.init() 中使用$http.jsonp() 吗?这是否意味着我不在$scope 之外?

【问题讨论】:

    标签: angularjs jsonp soundcloud


    【解决方案1】:

    你需要在控制器中注入$http:

      .controller('MainCtrl', function ($scope, $http) {
    

    【讨论】:

      【解决方案2】:

      .controller('MainCtrl', ['$scope', '$http', function ($scope, $http) {

      防止代码缩小问题

      【讨论】:

        【解决方案3】:

        我遇到了类似这样的错误:

        $location 未定义

        我将 $location 传递给控制器​​,它解决了问题。

        非常感谢

        【讨论】:

          猜你喜欢
          • 2015-02-06
          • 1970-01-01
          • 2011-08-30
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2014-06-07
          • 1970-01-01
          相关资源
          最近更新 更多