2013-04-08 101 views
0

我有一個問題,從我的服務使用angularjs獲取一些json信息。Angurlarjs獲取外部服務

我已經從谷歌下載了這個例子,並修改了這個從數據庫中獲取我想要的信息。但它似乎並沒有工作,我不知道它在哪裏破碎。這裏是我的service.js代碼:

angular.module('productServices', ['ngResource']). 
    factory('Product', function ($resource) { 
     return $resource('http://dev.integrator.blondgorilla.com/integratorservice/getproducts?min=0&max=15', {}, { 
      query: { method: 'GET', params: { ProductID: 'products' }, isArray: true } 
     }); 
    }); 

和控制器看起來像這樣

function ProductListCtrl($scope, Product) { 
    $scope.products = Product; 
} 

和產品list.html頁面是這樣的:

<div class="span10"> 
    <!--Body content--> 

    <ul class="products"> 
     <li ng-repeat="product in products" class="thumbnail"> 
      <p>{{product.ProductID}}</p> 
     </li> 
    </ul> 
</div> 

主要的js文件是AngularSpike.js

'use strict'; 
angular.module('ProsPhere', ['productFilters', 'productServices']). 
    config(['$routeProvider', function ($routeProvider) { 
     $routeProvider. 
      when('/products', { templateUrl: 'partials/product-list.html', controller: ProductListCtrl }). 
      when('/products/:productId', { templateUrl: 'partials/product-details.html', controller: ProductDetailCtrl }). 
      otherwise({ redirectTo: '/products' }); 
    }]); 

th我使用和修飾的E碼可以從

https://github.com/angular/angular-phonecat.git

發現謝謝,

Kianoush


兩個問題,到目前爲止,我發現:

1-如馬立克說.query() 2-我打電話不同的域名,我應該使用JSONP

angular.module('productServices', ['ngResource']). 
    factory('Product', function ($resource) { 
     var test = $resource('http://dev.integrator.blondgorilla.com/integratorservice/getproducts', {}, { 
      query: { method: 'JSONP', params: { minid: '0', maxid: '70' }, isArray: true } 
     }); 

     return test; 
    }); 

但我仍然無法看到產品

回答

0

這是第一個問題:

function ProductListCtrl($scope, Product) { 
    $scope.products = Product; 
} 

,那就是你要分配$資源範圍,而不是可檢索的某些結果由那個$資源類。

試試這個:

function ProductListCtrl($scope, Product) { 
    $scope.products = Product.query(); 
} 

如果還是有什麼不對,然後我可以幫你,如果你創建運行plnkr或類似的東西。

+0

謝謝馬立克,我已經改變了一個查詢,但仍然不告訴我任何錯誤,它不顯示任何產品。 :( – user2256922 2013-04-09 00:45:10

+0

我認爲$資源由於某種原因返回空列表。 – user2256922 2013-04-09 01:36:31

+0

歡迎您使用http://plnkr.co/創建運行示例,我將着眼於此。 – Marek 2013-04-09 21:36:25

0

$ resource object method立即返回一個空引用(對象或數組,取決於isArray)。一旦數據從服務器返回,現有的參考數據就會填充實際的數據。因此,在ProductListCtrl這裏我們需要回調函數來處理這個問題。 您可以使用此代碼替換控制器:

function ProductListCtrl($scope,Product){ 
    Product.query(function(data) { 
     $scope.products=data; 
    }); 
} 

,或者您可以使用此:

function ProductListCtrl($scope, Product) { 
     Product.query() 
     .$promise.then(function(data) { 
      $scope.products=data; 
     }); 
    }