我是角色的新手,我正在尝试在数据库中列出我的数据。但是,我是gettin $ scope not defined error..This is my code
productsService
.getProducts()
.success(function (data, status, headers, config) {
$scope.products = data;
console.log($scope.products);
})
.error(function (error) {
//Showing error message
$scope.status = 'Unable to retrieve product' + error.message;
});
在我的产品服务中
return {
getProducts: function () {
return $http({
method: 'GET',
url: '/api/Products'
}).success(function (data) {
alert("success");
// console.log(data);
}).error(function (error) {
//Showing error message
alert("failed");
$scope.status = 'Unable to retrieve products' + error.message;
console.log($scope.status);
});
},
我刚刚收到失败警报。请帮助!!!在后端,我能够从数据库中获取数据。
答案 0 :(得分:1)
在Angular服务中,您无法访问$scope
,这是您在指令和控制器中只有的内容。这就是为什么你收到关于$scope
未定义的错误。
此外,在您的服务中,您将从getProducts()
方法返回一个承诺,但您还要在其上添加成功和错误处理程序。您应该决定是否要返回原始$http
承诺,或者是否要返回$q
承诺,该承诺通过{{1}中返回的数据的某些转换副本进行解析处理程序。
最后一件事,如果您看到“失败”警报,则表示您向$http().success()
提交请求时服务器返回错误。如果您在浏览器中转到该URL,它是否有效?您应该查看为什么对该URL的基本GET请求无效。
答案 1 :(得分:1)
您不应在服务中使用范围变量,您的服务应仅用于获取/更新/共享某些数据。
以下是您的服务应如何显示
<强>服务强>
return {
getProducts: function() {
return $http({
method: 'GET',
url: '/api/Products'
});
},
并且在您的控制器中,您可以使用.success()
和.error()
来设置错误消息。
<强>控制器强>
productsService
.getProducts()
.success(function (data, status, headers, config) {
$scope.products = data;
})
.error(function (error) {
$scope.status = 'Unable to retrieve product' + error.message;
});
希望这有帮助。