具有此名称的控制器未在angularjs ngroute中注册

时间:2017-02-15 09:09:44

标签: angularjs controller ngroute

我在mvc-angularjs中创建一个web应用程序,我正在使用ngroute。

我的布局中的Angularjs控制器使用html代码:

<div class="container body-content" ng-app="MyApp">
    <br />
    <br />
    <br />
    <div style="float:right;">
        <a href="#" class="btn btn-danger">Sign Out</a>
    </div>

    @RenderBody()
    <hr />
</div>

<script>
    (function () {

        var app = angular.module('MyApp', ['ngRoute', "ngStorage"]);  

        app.controller('myctrllayout', function ($scope) {  

        });
    })();
 </script>

这是我的欢迎页面:

<div ng-controller="welcome">

</div>
<script>
    angular.module('MyApp',[]) 
    .controller('welcome', function ($scope) { 

    });
</script>

当我运行代码时出现以下错误

  

错误:$ controller:ctrlreg具有此名称的控制器不是   注册

     

名称为“欢迎”的控制器&#39;没有注册。

当我将我的应用从('MyApp',[])更改为('MyApp')时:

  

模块&#39; MyApp&#39;不可用!您要么错误拼写了模块名称   或者忘了加载它。如果注册模块,请确保指定   依赖关系作为第二个参数。

1 个答案:

答案 0 :(得分:5)

angular.module可以创建新模块或检索现有模块。这取决于您使用的语法。

官方角度文档上也是referenced

e.g。

angular.module('MyApp',[])创建一个新模块,因为它包含依赖注入数组(作为第二个参数)。

angular.module('MyApp')是现有模块的引用,因为它不包含依赖项注入数组。

在您的情况下,它会在第一个代码块上创建一个新模块。因此,在第二个代码块中,您需要检索它。

如果你改变

,可能会解决问题 第二个代码块中的

angular.module('MyApp',[])angular.module('MyApp')