2013-10-20 64 views
0

我有這個控制器正在爲Angular UI typeahead正確工作。我如何將服務器調用添加爲資源?

var receivableApp = angular.module('receivableApp', ['ui.bootstrap', 'ngResource']) 
.controller('ReceivableController', function ($scope,$http) { 
    $scope.Debtors = function (term) {   
     return $http.get('/Receivable/GetDebtors/?term=' + term).then(function (response) {     
      return response.data; 
     }); 
    }; 
}); 

回答

1
receivableApp.factory('GetDebtors', ['$resource', 
    function($resource){ 
     return $resource('/Receivable/GetDebtors/'); 
    }]); 

這將添加一個服務GetDebtors具有默認GET,和其他REST處理程序。

現在,讓你的控制器內的電話,你可以這樣做:

debtControllers.controller('DebtCtrl', ['$scope', 'GetDebtors', 
    $scope.debts = GetDebtors.get({term: 'foo'}); 
]); 

這相當於撥打電話到/Receivable/GetDebtors/?term=foo

如果要更改行爲,可以覆蓋$resource上可用的默認方法。更多細節可以在here找到。

0

$資源是爲了從端點檢索數據,操縱它並將其發送回來。在你的資源上使用自定義方法很好,但是你不想錯過OOTB.var Todo = $ resource('/ api/1/todo /:id')的很酷的功能。 ;

//創建待辦事項var todo1 = new Todo(); todo1.foo ='bar'; todo1.something = 123; todo1。$ save();

+0

謝謝保羅。我真的想要一個基於我上面的代碼的例子。我已經看過所有的Todo例子,但我需要知道如何傳遞參數等。這就是爲什麼我標記了上面的答案。 – Greg

+0

可以使用以下參數調用類對象或實例對象上的操作方法:HTTP GET「class」操作:Resource.action([parameters],[success],[error])非GET「class」操作: Resource.action([參數],postData,[成功],[錯誤])非GET實例操作:實例$ action([參數],[成功],[錯誤]) –

+0

根據參數進行調用的語法 –