2016-07-14 85 views
0

我见过一些类似这个帖子,但我认为我正确实施了依赖关系,但我似乎仍然得到错误。这是代码。

的IndexController:

/** 
* IndexController 

* @namespace task_list.layout.controllers 
*/ 
(function() { 
    'use strict'; 

    angular 
    .module('task_list.layout.controllers') 
    .controller('IndexController', IndexController); 

    IndexController.$inject = ['$scope', 'Auth', 'Tasks', 'Snackbar']; 

    /** 
    * @namespace IndexController 
    */ 
    function IndexController($scope, Auth, Tasks, Snackbar) { 
    var vm = this; 

    vm.isAuthenticated = Auth.isAuthenticated(); 
    vm.tasks = []; 

    activate(); 

    /** 
    * @name activate 
    * @desc Actions to be performed when this controller is instantiated 
    * @memberOf task_list.layout.controllers.IndexController 
    */ 
    function activate() { 
     Tasks.all().then(tasksSuccessFn, tasksErrorFn); 

     $scope.$on('task.created', function (event, task) { 
     vm.tasks.unshift(task); 
     }); 

     $scope.$on('task.created.error', function() { 
     vm.tasks.shift(); 
     }); 

     /** 
     * @name tasksSuccessFn 
     * @desc Update tasks array on view 
     */ 
     function tasksSuccessFn(data, status, headers, config) { 
     vm.tasks = data.data; 
     } 

     /** 
     * @name tasksErrorFn 
     * @desc Show snackbar with error 
     */ 
     function tasksErrorFn(data, status, headers, config) { 
     Snackbar.error(data.error); 
     } 
    } 
    } 
})(); 

任务

/** 
* Tasks 
* @namespace task_list.tasks.services 
*/ 
(function() { 
    'use strict'; 

    angular 
    .module('task_list.tasks.services') 
    .factory('Tasks', Tasks); 

    Tasks.$inject = ['$http']; 

    /** 
    * @namespace Tasks 
    * @returns {Factory} 
    */ 
    function Tasks($http) { 
    var Tasks = { 
     all: all, 
     create: create, 
     // edit: edit, 
     // delete: delete, 
     get: get 
    }; 

    return Tasks; 

    //////////////////// 

    /** 
    * @name all 
    * @desc Get all Tasks 
    * @returns {Promise} 
    * @memberOf task_list.tasks.services.Tasks 
    */ 
    function all() { 
     return $http.get('/api/v1/tasks/'); 
    } 

    /** 
    * @name create 
    * @desc Create a new Task 
    * @param {string} name The name of the new Task 
    * @returns {Promise} 
    * @memberOf task_list.tasks.services.Tasks 
    */ 
    function create(name) { 
     return $http.post('/api/v1/tasks/', { 
     name: name 
     }); 
    } 

    /** 
    * @name get 
    * @desc Get the Tasks of a given user 
    * @param {string} username The username to get Tasks for 
    * @returns {Promise} 
    * @memberOf task_list.tasks.services.Tasks 
    */ 
    function get(username) { 
     return $http.get('/api/v1/accounts/' + username + '/tasks/'); 
    } 
    } 
})(); 

Task_list.js

(function() { 
    'use strict'; 

    angular 
    .module('task_list', [ 
     'task_list.routes', 
     'task_list.auth', 
     'task_list.layout', 
     'task_list.tasks', 
     'task_list.config', 
     'task_list.utils', 
    ]); 

    angular 
    .module('task_list.routes', ['ngRoute']); 

    angular 
    .module('task_list.config', []); 

    angular 
    .module('task_list') 
    .run(run); 

    run.$inject = ['$http']; 

    /** 
    * @name run 
    * @desc Update xsrf $http headers to align with Django's defaults 
    */ 
    function run($http) { 
    $http.defaults.xsrfHeaderName = 'X-CSRFToken'; 
    $http.defaults.xsrfCookieName = 'csrftoken'; 
    } 
})(); 

模块及其子文件夹(控制器,指示,服务)的我负荷。请注意,我正在缩小这些文件并在我的应用中加载每个模块,例如:

(function() { 
    'use strict'; 

    angular 
    .module('task_list.layout', [ 
     'task_list.layout.controllers' 
    ]); 

    angular 
    .module('task_list.layout.controllers', []); 
})(); 

任何帮助都非常感谢。谢谢!

这里是控制台日志:

c98216751c41.js:2140 Error: [$injector:unpr] Unknown provider: TasksProvider <- Tasks <- IndexController 
http://errors.angularjs.org/1.5.7/$injector/unpr?p0=TasksProvider%20%3C-%20Tasks%20%3C-%20IndexController 
    at http://127.0.0.1:9090/static/CACHE/js/c98216751c41.js:1507:8 
    at http://127.0.0.1:9090/static/CACHE/js/c98216751c41.js:1721:7 
    at Object.getService [as get] (http://127.0.0.1:9090/static/CACHE/js/c98216751c41.js:1737:122) 
    at http://127.0.0.1:9090/static/CACHE/js/c98216751c41.js:1721:212 
    at getService (http://127.0.0.1:9090/static/CACHE/js/c98216751c41.js:1737:122) 
    at injectionArgs (http://127.0.0.1:9090/static/CACHE/js/c98216751c41.js:1740:58) 
    at Object.instantiate (http://127.0.0.1:9090/static/CACHE/js/c98216751c41.js:1747:106) 
    at $controller (http://127.0.0.1:9090/static/CACHE/js/c98216751c41.js:2000:20) 
    at Object.link (http://127.0.0.1:9090/static/CACHE/js/c98216751c41.js:2681:377) 
    at http://127.0.0.1:9090/static/CACHE/js/c98216751c41.js:1576:296 <div class="col-xs-12 ng-view ng-scope"> 

tasks.module.js

的js文件
(function() { 
    'use strict'; 

    angular 
    .module('task_list.tasks', [ 
     'task_list.tasks.controllers', 
     'task_list.tasks.directives', 
     'task_list.tasks.services', 
    ]); 

    angular 
    .module('task_list.tasks.controllers', []); 

    angular 
    .module('task_list.tasks.directives', ['ngDialog']); 

    angular 
    .module('task_list.tasks.services', []); 
})(); 

加载顺序:

<script type="text/javascript" src="{% static 'javascripts/task_list.js' %}"></script> 

<script type="text/javascript" src="{% static 'javascripts/task_list.config.js' %}"></script> 
<script type="text/javascript" src="{% static 'javascripts/task_list.routes.js' %}"></script> 

<script type="text/javascript" src="{% static 'javascripts/auth/auth.module.js' %}"></script> 
<script type="text/javascript" src="{% static 'javascripts/auth/services/auth.service.js' %}"></script> 
<script type="text/javascript" src="{% static 'javascripts/auth/controllers/register.controller.js' %}"></script> 

<script type="text/javascript" src="{% static 'javascripts/tasks/tasks.module.js' %}"></script> 

<script type="text/javascript" src="{% static 'javascripts/auth/controllers/login.controller.js' %}"></script> 
<script type="text/javascript" src="{% static 'javascripts/layout/layout.module.js' %}"></script> 
<script type="text/javascript" src="{% static 'javascripts/layout/controllers/navbar.controller.js' %}"></script> 

<script type="text/javascript" src="{% static 'javascripts/tasks/directives/tasks.directive.js' %}"></script> 
<script type="text/javascript" src="{% static 'javascripts/tasks/controllers/tasks.controller.js' %}"></script> 

<script type="text/javascript" src="{% static 'javascripts/utils/utils.module.js' %}"></script> 
<script type="text/javascript" src="{% static 'javascripts/utils/services/snackbar.service.js' %}"></script> 

<script type="text/javascript" src="{% static 'javascripts/layout/controllers/index.controller.js' %}"></script> 
+0

出于好奇,这是什么都与Python(或Django的),怎么办? – mgilson

+0

似乎您的任务服务未注册。你可以把一个控制台日志或东西,看看你的服务是实例化还是已经加载?你可以签出最终的捆绑文件来查看它是否包含在内。它引发这个错误,因为indexController找不到任务服务 –

+0

@mgilson它只是我正在处理的项目是在Django中,并且我将角度集成为我的视图,但是对于您而言它并不是。 – hect1c

回答

0

我能解决我的问题。我其实并没有在我的html文件中加载tasks_list.service脚本。当我编辑我原来的评论时,我能够更好地看到这一点。我不知何故错过了它。感谢帮助我隔离它的回复。

缺少代码在我的HTML文件:

<script type="text/javascript" src="{% static 'javascripts/tasks/services/tasks.service.js' %}"></script>

相关问题