Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
AngularJS可以';我找不到我的控制器_Angularjs - Fatal编程技术网

AngularJS可以';我找不到我的控制器

AngularJS可以';我找不到我的控制器,angularjs,Angularjs,我知道这是一个常见的问题,但通过阅读之前提出的问题,我无法找到解决方案 我实际上有两个错误,但第一个是关于找不到我的控制器 $injector/nomod?p0=myApp.controllers 我的目录结构如下所示: . └── static ├── index.html ├── js │   ├── app.js │   └── controllers.js ├── lib │   └── angular-ui-router.min.js

我知道这是一个常见的问题,但通过阅读之前提出的问题,我无法找到解决方案

我实际上有两个错误,但第一个是关于找不到我的控制器

$injector/nomod?p0=myApp.controllers

我的目录结构如下所示:

.
└── static
    ├── index.html
    ├── js
    │   ├── app.js
    │   └── controllers.js
    ├── lib
    │   └── angular-ui-router.min.js
    └── partials
        ├── view1.html
        └── view2.html
<html ng-app="myApp">
    <head>
        <meta charset="UTF-8">
        <title>Hello AngularJS</title>
    </head>
    <body>
        <div ui-view></div>
        <script type="text/javascript" src="//cdnjs.cloudflare.com/ajax/libs/angular.js/1.4.2/angular.min.js"></script>
        <script type="text/javascript" src="//cdnjs.cloudflare.com/ajax/libs/angular.js/1.4.2/angular-route.min.js"></script>
        <script type="text/javascript" src="lib/angular-ui-router.min.js"></script>
        <script type="text/javascript" src="js/controllers.js"></script>
        <script type="text/javascript" src="js/app.js"></script>
    </body>
</html>
(function(angular) {

    var app = angular.module('myApp', ['ui.router', 'myApp.controllers']);

    app.config(function($stateProvider) {
        $stateProvider.state('view1', {
            url: '/view1',
            templateUrl: 'partials/view1.html',
            controller: 'View1Controller'
        }).state('view2', {
            url: '/view2',
            templateUrl: 'partials/view2.html',
            controller: 'View2Controller'
        });
    }).run(function($state) {
        $state.go('view2');
    });

})(angular);
(function(angular) {
    var app = angular.module('myApp.controllers');

    app.controller('View1Controller', function($scope) {
        $scope.data = 'my view 1';
    });

    app.controller('View2Controller', function($scope) {
        $scope.data = 'my view 2';
    });

})(angular);
我的索引文件如下所示:

.
└── static
    ├── index.html
    ├── js
    │   ├── app.js
    │   └── controllers.js
    ├── lib
    │   └── angular-ui-router.min.js
    └── partials
        ├── view1.html
        └── view2.html
<html ng-app="myApp">
    <head>
        <meta charset="UTF-8">
        <title>Hello AngularJS</title>
    </head>
    <body>
        <div ui-view></div>
        <script type="text/javascript" src="//cdnjs.cloudflare.com/ajax/libs/angular.js/1.4.2/angular.min.js"></script>
        <script type="text/javascript" src="//cdnjs.cloudflare.com/ajax/libs/angular.js/1.4.2/angular-route.min.js"></script>
        <script type="text/javascript" src="lib/angular-ui-router.min.js"></script>
        <script type="text/javascript" src="js/controllers.js"></script>
        <script type="text/javascript" src="js/app.js"></script>
    </body>
</html>
(function(angular) {

    var app = angular.module('myApp', ['ui.router', 'myApp.controllers']);

    app.config(function($stateProvider) {
        $stateProvider.state('view1', {
            url: '/view1',
            templateUrl: 'partials/view1.html',
            controller: 'View1Controller'
        }).state('view2', {
            url: '/view2',
            templateUrl: 'partials/view2.html',
            controller: 'View2Controller'
        });
    }).run(function($state) {
        $state.go('view2');
    });

})(angular);
(function(angular) {
    var app = angular.module('myApp.controllers');

    app.controller('View1Controller', function($scope) {
        $scope.data = 'my view 1';
    });

    app.controller('View2Controller', function($scope) {
        $scope.data = 'my view 2';
    });

})(angular);
我的controller.js文件如下所示:

.
└── static
    ├── index.html
    ├── js
    │   ├── app.js
    │   └── controllers.js
    ├── lib
    │   └── angular-ui-router.min.js
    └── partials
        ├── view1.html
        └── view2.html
<html ng-app="myApp">
    <head>
        <meta charset="UTF-8">
        <title>Hello AngularJS</title>
    </head>
    <body>
        <div ui-view></div>
        <script type="text/javascript" src="//cdnjs.cloudflare.com/ajax/libs/angular.js/1.4.2/angular.min.js"></script>
        <script type="text/javascript" src="//cdnjs.cloudflare.com/ajax/libs/angular.js/1.4.2/angular-route.min.js"></script>
        <script type="text/javascript" src="lib/angular-ui-router.min.js"></script>
        <script type="text/javascript" src="js/controllers.js"></script>
        <script type="text/javascript" src="js/app.js"></script>
    </body>
</html>
(function(angular) {

    var app = angular.module('myApp', ['ui.router', 'myApp.controllers']);

    app.config(function($stateProvider) {
        $stateProvider.state('view1', {
            url: '/view1',
            templateUrl: 'partials/view1.html',
            controller: 'View1Controller'
        }).state('view2', {
            url: '/view2',
            templateUrl: 'partials/view2.html',
            controller: 'View2Controller'
        });
    }).run(function($state) {
        $state.go('view2');
    });

})(angular);
(function(angular) {
    var app = angular.module('myApp.controllers');

    app.controller('View1Controller', function($scope) {
        $scope.data = 'my view 1';
    });

    app.controller('View2Controller', function($scope) {
        $scope.data = 'my view 2';
    });

})(angular);
还有第二个可能是相关的

如上所述,angular无法找到我的控制器。有人知道我做错了什么吗?请让我知道,如果我需要粘贴更多的代码

我已经在github上共享了代码,以防有人发现它更容易处理


在angular
angular.module()中,
是一个setter和getter。根据文件(通过):

传递一个参数将检索现有的angular.Module,而 传递多个参数将创建新的angular.Module

Getter

var-app=angular.module('myApp.controllers')使用模块作为getter

它失败,因为模块
myApp.controllers
尚未创建

二传手

要将其用作setter,请将其更改为

var app = angular.module('myApp.controllers', []); // note the []

尝试更改已加载脚本的顺序位置。文件
app.js
的加载时间应早于
controllers.js
。虽然没有明确说明此get/set逻辑,但在第一行,有以下语句:
传递一个参数将检索现有的angular.Module,而传递多个参数将创建一个新的angular.Module
。谢谢。我已经补充了这一点。