角度引用错误$ scope未定义

时间:2014-10-17 05:52:52

标签: angularjs asp.net-mvc-4

我是角色的新手,我正在尝试在数据库中列出我的数据。但是,我是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);
                });

            },

我刚刚收到失败警报。请帮助!!!在后端,我能够从数据库中获取数据。

2 个答案:

答案 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;
   });

希望这有帮助。