我有一個依賴於TransactionService
的控制器。其中一個方法是AngularJS:如何將值從控制器傳遞到服務方法?
$scope.thisMonthTransactions = function() {
$scope.resetTransactions();
var today = new Date();
$scope.month = (today.getMonth() + 1).toString();
$scope.year = today.getFullYear().toString();
$scope.transactions = Transaction.getForMonthAndYear();
};
的TransactionService
看起來像
angular.module('transactionServices', ['ngResource']).factory('Transaction', function ($resource, $rootScope) {
return $resource('/users/:userId/transactions/:transactionId',
// todo: default user for now, change it
{userId: 'bd675d42-aa9b-11e2-9d27-b88d1205c810', transactionId: '@uuid'},
{
getRecent: {method: 'GET', params: {recent: true}, isArray: true},
getForMonthAndYear: {method: 'GET', params: {month: 5, year: 2013}, isArray: true}
});
});
正如你可以看到getForMonthAndYear
取決於方法兩個參數month
和year
,這是硬編碼,現在爲params: {month: 5, year: 2013}
。我如何從我的控制器傳遞這些數據?
我試過rootScope
注入TransactionService
,但這並沒有幫助(這意味着我不知道如何使用它可能)。
另外Angular ngResource documentation不建議任何方式來執行此操作。
有人可以在這裏指導嗎?
UPDATE
我的控制器看起來像
function TransactionsManagerController($scope, Transaction) {
$scope.thisMonthTransactions = function() {
$scope.resetTransactions();
var today = new Date();
$scope.month = (today.getMonth() + 1).toString();
$scope.year = today.getFullYear().toString();
var t = new Transaction();
$scope.transactions = t.getForMonthAndYear({month: $scope.month});
};
}
和更改服務方法
getForMonthAndYear: {method: 'GET', params: {month: @month, year: 2013}, isArray: true}
我看console.log
和它說
Uncaught SyntaxError: Unexpected token ILLEGAL transaction.js:11
Uncaught Error: No module: transactionServices
我認爲他的問題不是與$資源,而是控制器和服務之間的交互 – mfeingold