【发布时间】:2013-09-06 12:49:46
【问题描述】:
这是我第一个学习 Angular js 的项目。
我创建了一个控制器(EditEventsController)和一个服务(eventData)。
EditEventController 的代码是
'user strict'
eventsApp.controller("EditEventController",
function EditEventController($scope,eventData) {
$scope.saveEvent = function (event, newEventForm, eventData) {
if (newEventForm.$valid) {
eventData.save(event);
}
}
});
而eventData服务是
eventsApp.factory('eventData', function ($q, $resource) {
var resource = $resource('data/event/:id.js', { id: '@id' });
return {
getEvent: function () {
return {...}
},
save: function (event) {
event.id = 999;
var deferred = $q.defer();
resource.save(event,
function (response) { deferred.resolve(response); },
function (response) { deferred.reject(response); });
return deferred.promise;
}
};
});
我使用这个控制器的HTML页面被命名为newEvent.html,这些是我添加的脚本
<script src="lib/angular/angular.js"></script>
<script src="lib/angular/angular-sanitize.js"></script>
<script src="lib/angular/angular-resource.js"></script>
<script src="js/app.js"></script>
<script src="js/controllers/EditEventController.js"></script>
<script src="js/services/EventData.js"></script>
<script src="js/filters.js"></script>
当我试图打电话给eventData.save(event) 时。在 EditEventsController 内部它给了我一个错误,因为 eventData 在那里是 null,因此我无法调用 save() 函数。
控制台中的完整错误是
TypeError: Cannot call method 'save' of undefined
at Object.EditEventController.$scope.saveEvent (http://localhost:9669/app/js/controllers/EditEventController.js:6:27)
at elementFns (http://localhost:9669/app/lib/angular/angular.js:6365:19)
at ngEventDirectives.(anonymous function) (http://localhost:9669/app/lib/angular/angular.js:12987:13)
at Object.$get.Scope.$eval (http://localhost:9669/app/lib/angular/angular.js:8057:28)
at Object.$get.Scope.$apply (http://localhost:9669/app/lib/angular/angular.js:8137:23)
at Object.ng.config.$provide.decorator.$delegate.__proto__.$apply (http://localhost:9669/app/newEvent.html:855:30)
at HTMLButtonElement.ngEventDirectives.(anonymous function) (http://localhost:9669/app/lib/angular/angular.js:12986:17)
at event.preventDefault (http://localhost:9669/app/lib/angular/angular.js:1992:10)
at Array.forEach (native)
at forEach (http://localhost:9669/app/lib/angular/angular.js:130:11)
我在这里做错了什么?我确定这是小事
【问题讨论】:
标签: angularjs angularjs-service angularjs-controller