簡體   English   中英

Angular JS,錯誤:[$ injector:nomod]模塊'blogger.posts.controllers'不可用

[英]Angular JS, Error: [$injector:nomod] Module 'blogger.posts.controllers' is not available

我正在關注Angular.js-忍者新手

這就是我設置項目的方式: app / js / app.js:

angular.module('blogger', ['blogger.posts', 'ui.router']);

app / modules / posts / postModule.js:

angular.module('blogger.posts', ['blogger.posts.controllers', 'blogger.posts.services']);

angular.module('blogger.posts').config(['$stateProvider', '$urlRouterProvider', '$locationProvider', function($stateProvider, $urlRouterProvider, $locationProvider){
    $urlRouterProvider.otherwise('/posts');
    $stateProvider.state('allPosts', {
        url:'/posts',
        templateUrl:'modules/posts/views/posts.html',
        controller:'PostsController'
    });
}]);

app / modules / posts / js / controllers.js:

angular.module('blogger.posts.controllers')
    .controller('PostController', ['$scope', 'postService', function($scope, postService){
        $scope.getAllPosts=function(){
            return postService.getAll();
        };
        $scope.posts=$scope.getAllPosts();
    }]);

app / modules / posts / js / services.js:

angular.module('blogger.posts.services').factory('postService', 
    function(){
        return {
            posts:[{
                id:1,
                title:'Sample title 1',
                content:'Sample content 1',
                permalink:'sample-title1',
                author:'Sandy',
                datePublished:'2015-21-01'
            }],
            getAll:function(){
                return this.posts;
            }
       }
  });

但是,如果我運行代碼,則會出現此錯誤:

錯誤:[$ injector:nomod]模塊'blogger.posts.controllers'不可用! 您可能拼錯了模塊名稱,或者忘記了加載它。 如果注冊模塊,請確保將依賴項指定為第二個參數

/**
 * Create blogger.posts which dependes on sub modules 
 * 'blogger.posts.controllers', 'blogger.posts.services'
 * Ex . angular.module('moduleName', []) syntax for module setter.
 *  This is requried before registering on module
 */
angular.module('blogger.posts', ['blogger.posts.controllers',
 'blogger.posts.services']);

/**
 * Module setters
 */
angular.module('blogger.posts.controllers', []);
angular.module('blogger.posts.services', []);

/**
 * Now you can register controllers , service, directive etc 
 */
angular.module('blogger.posts.services').factory('postService',
    function () {
        return {
            posts: [{
                id: 1,
                title: 'Sample title 1',
                content: 'Sample content 1',
                permalink: 'sample-title1',
                author: 'Sandy',
                datePublished: '2015-21-01'
            }],
            getAll: function () {
                return this.posts;
            }
        }
    });


angular.module('blogger.posts.controllers')
    .controller('PostController', ['$scope', 'postService', 
       function ($scope, postService) {
        $scope.getAllPosts = function () {
            return postService.getAll();
        };
        $scope.posts = $scope.getAllPosts();
    }]);

我只是解決了這個問題(我在做同樣的教程:P)。 在文件app / js / app.js中,您需要具有:

angular.module('blogger', [
   'ui.router',
   'blogger',
   'blogger.posts'
]).run(['$state', function($state){
   $state.go('allPosts');
}]);

那應該解決它:)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM