我正在使用Angular 1.1.5(請等待angular-ui-router
與1.2.0一起使用)。我定義的資源和服務:如何從服務中調用角度資源
myapp.factory('Monitoring', function($resource) {
return $resource('/webapp/network/v1/cronjobs/:id/:action', { id: '@id' }, {
status: { method: 'PATCH', headers:{'Content-Type': 'application/json'}, params:{action: 'status'}}
}
);
});
myapp.factory('MonitoringCRUDControllerService', ['Monitoring', '$state', function(Monitoring, $state) {
return {
query: function() {
var m = new Monitoring();
var promise = m.$query().then(function(response) {
console.log(response);
return response.data;
});
return promise;
},
query1: function() {
var m = new Monitoring();
return m.$query();
},
// Angular 1.2.0 RC
query2: function() {
var m = new Monitoring();
return m.$query().$promise;
}
}
}]);
在我的控制器我試圖query
和query1
但他們兩人返回Cannot call method 'then' of undefined
。 query2
應該是調用資源的1.2.0方法。
編輯:更新控制器
function($scope, $location, MonitoringCRUDControllerService) {
$scope.refresh = function() {
MonitoringCRUDControllerService.query().then(function(value) {
$scope.myData = value;
});
};
}
console.log(MonitoringCRUDControllerService)
回報Object {create: function, get: function, query1: function, query2: function, update: function…}
EDIT2:
我試過的建議
query3: function() {
return Monitoring.query();
},
query4: function() {
var m = new Monitoring();
var promise = m.query().then(function(response) {
console.log(response);
return response.data;
});
return promise;
},
query3
返回一個承諾,您可以撥打$then
而不是then
,它的工作原理。
query4
返回錯誤Object #<Resource> has no method 'query'
。我使用new
的原因是用於傳遞參數(這是它的記錄方式):另請參閱Angular resource REST has no method '$save'
刷新方法定義在哪裏。看起來'MonitoringCRUDControllerService'沒有被注入控制器。請顯示控制器代碼。 – Chandermani
更新的控制器代碼 – Sydney
我認爲你應該使用'query'而不是$ query調用'Monitoring'對象方法。 'var promise = m.query()' – Chandermani