控制器功能未定义

时间:2016-05-18 08:31:51

标签: angularjs typescript

我正在尝试使用TypeScript设置AngularJS项目,但我遇到了以下错误:

  

错误:[ng:areq] http://errors.angularjs.org/1.5.5/ng/areq?p0=MovieCtrl&p1=not%20aNaNunction%2C%20got%20undefined

我也使用watchify将我的app.ts编译为bundle.js

在我的索引中,我使用ng-app引导Angular,我包含一个html文件(加载正常),然后导入我身体底部的外部文件。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="utf-8" />
    <title>TypeScript HTML App</title>
    <link rel="stylesheet" href="app.css" type="text/css" />
</head>
<body ng-app="app">
    <div ng-include="'movie.html'"></div>
    <!--Libraries-->
    <script src="Scripts/angular.min.js"></script>
    <script src="bundle.js"></script>
    <!--Controllers-->
    <script src="app/movieCtrl.js"></script>

</body>
</html>

movie.html我有:

<div ng-controller="MovieCtrl as vm"></div>

这是movieCtrl文件:

class MovieCtrl {

    // fields
    // constructor
    // propperties
    // functions
}

angular
    .module('app')
    .controller('Movie',
    MovieCtrl);

最后我的app.ts

angular.module("app", []);

为什么MovieCtrl会抛出错误?

2 个答案:

答案 0 :(得分:0)

//答案//

再次(再次)查看PluralSight课程后,我发现了错误。

在movieCtrl文件中,我将类定义为MovieCtrl,但在我的模块注册中,我将其定义为Movie。改变:

angular
    .module('app')
    .controller('Movie',
    MovieCtrl);

angular
    .module('app')
    .controller('MovieCtrl',
    MovieCtrl);

修正了错误。

答案 1 :(得分:0)

为我解决的问题是关闭控制器。很简单,但要修理它。

最后添加: }

.controller('UserCtrl', function (auth, $scope) { 
  $scope.auth = auth; 
  $scope.$watch('auth.profile.name', function(name) { 
    if (!name) { 
      return;
    } 
    $scope.message.text = 'Welcome ' + auth.profile.name + '!'; 
  });

结果如此:

.controller('UserCtrl', function (auth, $scope) { 
  $scope.auth = auth; 
  $scope.$watch('auth.profile.name', function(name) { 
    if (!name) { 
      return;
    } 
    $scope.message.text = 'Welcome ' + auth.profile.name + '!'; 
  });
})