AngularJS" Argument' mainController'不是一个功能"

时间:2015-10-20 16:11:12

标签: javascript angularjs

我是Angular的新手,需要一些帮助。

我试图设置一个基本的目录结构,其中我有单独的JS文件中的模块和控制器。但是,当我这样做时,我会收到帖子标题中所述的错误。

该模块如下所示:

var myApp = angular.module('myApp', ['ngRoute']);

这样的控制器:

myApp.controller('mainController', function ($scope) {
$scope.message = 'Test message';
});

路线:

myApp.config(function ($routeProvider) {
$routeProvider

// route for the home page
    .when('/', {
    templateUrl: 'components/home/home.html',
    controller: 'mainController'
})

// route for the about page
.when('/about', {
    templateUrl: 'components/about/about.html',
    controller: 'aboutController'
})

// route for the contact page
.when('/contact', {
    templateUrl: 'components/contact/contact.html',
    controller: 'contactController'
});
});

然后在我的HTML中使用ng-app =" myApp"和ng-controller =" mainController"并试图写出:{{message}}。但它没有用。

如果我将所有角度代码放在同一个JS文件中,那么它可以工作。但不是在他们分开的时候。

非常感谢帮助和解释!

1 个答案:

答案 0 :(得分:0)

正如评论所暗示的那样,此错误通常会导致我对包含mainController的文件缺少引用。您的index.html应包含对javascript文件的脚本引用。以下是我的一个小应用程序的示例:

<!-- Custom scripts -->
    <script src="/app.js"></script>

    <!-- Controllers -->
    <script src="/login/loginCtrl.js"></script>
    <script src="/home/homeCtrl.js"></script>

    <!-- Directives -->
    <script src="/common/directives/pageHeader/pageHeader.directive.js"></script>
    <script src="/common/directives/footerGeneric/footerGeneric.directive.js"></script>
    <script src="/common/directives/queryBuilder/queryBuilder.directive.js"></script>
    <script src="/common/directives/scroll/infScroll.js"></script>

所有这一切都应该包括jquery和angular。另外(我不知道你成功包含app.js的位置,你可能已经这样做了)你需要将AngularJS路由从你的快速服务器(假设快速/节点后端)引导到index.html文件像这样的app文件:

app.use(express.static(path.join(__dirname, 'app_client')));
app.use(function (req,res){
    res.sendfile(path.join(__dirname, 'app_client', 'index.html'))
});

我希望这很有帮助。如果您在尝试包含应用程序和控制器的位置发布代码,那么我可以提供更详细的答案。