2014-10-17 19 views
0

我新的角度,我想列出我的數據在數據庫中。但是,我剛開沒有定義error..This $範圍是我的代碼

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

      }, 

我剛剛收到失敗警報。請幫助!!!在後端我能夠從數據庫中獲取數據。

回答

1

在角服務,您不必訪問$scope,這是你唯一擁有的指令和控制器。這就是爲什麼你得到一個關於$scope未定義的錯誤。

而且,在你的服務,你是從你的getProducts()方法返回一個承諾,但你也到它添加成功和錯誤處理程序。你應該讓你的心是否要返回原$http承諾,或者相反,如果你想返回一個$q承諾其與在$http().success()處理程序返回的數據的一些轉換副本解決。

最後一點,如果你看到的「失敗」的警報,這意味着當您提交請求/api/Products您的服務器返回一個錯誤。如果您在瀏覽器中訪問該網址,它是否有效?您應該瞭解爲什麼對該URL的基本GET請求不起作用。

+0

我試圖直接訪問API /產品,我得到了一些錯誤,我沒有任何錯誤> 的線索出現錯誤。 'ObjectContent'1'類型無法序列化內容類型爲'application/xml;字符集= UTF-8' 。 System.InvalidOperationException Philomath 2014-10-17 07:43:34

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

希望這有助於。