Angular JS $http 未在范围内定义
Posted
技术标签:
【中文标题】Angular JS $http 未在范围内定义【英文标题】:Angular JS $http is not defined in scope 【发布时间】: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
之外?
【问题讨论】:
【参考方案1】:你需要在控制器中注入$http:
.controller('MainCtrl', function ($scope, $http)
【讨论】:
【参考方案2】:或
.controller('MainCtrl', ['$scope', '$http', function ($scope, $http)
防止代码缩小问题
【讨论】:
【参考方案3】:我遇到了类似这样的错误:
$location 未定义
我将 $location 传递给控制器,它解决了问题。
非常感谢
【讨论】:
以上是关于Angular JS $http 未在范围内定义的主要内容,如果未能解决你的问题,请参考以下文章
将外部 Javascript 与在全局(窗口)范围内定义方法隔离开来
Javascript命名空间 - 如何根据命名导出函数范围内定义的函数和变量?
为了让 groovy 闭包修改在委托范围内定义的变量,是不是需要显式指定 delegate.theVariableName?