-1

これは、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)

私はここで間違って何をしていますか? これは小さなことだと確信しています

4

2 に答える 2

1

user strictタイプミスがあるため、ECMA V5 コンパイラ チェックもトリガーされないことを指摘したいと思います。useであってはならないことはおそらくご存知でしょうuser

この変更により、新しい宣言されていない var に遭遇したときにエラーがスローされます。これは、他の利点の中で気付いていない可能性がある新しいグローバルを作成するのとは対照的です。この問題を簡単にキャッチできる可能性があります。

于 2016-06-21T18:55:58.023 に答える