β

AngularJS学习笔记

EXDestroyer 191 阅读

今天开始了AngularJS的学习之旅,在尝试书本以及视频当中的实例的时候,有以下代码段:

function MyController($scope, $timeout) { 
         var updateClock = function() { 
         $scope.clock = new Date();
         $timeout(function() { 
                 updateClock();}, 1000);
         };   
         updateClock();
     };

然而在我这控制台却一直报错:

Argument ‘MyController’ is not a function, got undefined

捣鼓了半天也百思不得其解,想了想是不是跟最新版的兼容性有关,于是试试把自己下载的最新版AngularJS文件(1.3.9)换成教程里的版本(1.3.0),果然成功了。

不过在为一个强迫症,使用最新版是必须的,所以还是寻找了解决方案,最后找到了三分相关资料:

angularjs – Error: Argument is not a function, got undefined

angular 的controller 不识别function

《Angular权威教程》读书笔记1

了解到从AngularJS 1.3.X之后的版本都不支持全局控制器了,于是只要改为用module.controller语法来注册控制器即可:

var myApp = angular.module('MyApp', []);
     myApp.controller("MyController", function($scope, $timeout){
            var updateClock = function() {                
         $scope.clock = (new Date).toLocaleString()
         $timeout(function() { 
                 updateClock();}, 1000);
         };   
         updateClock();

不过还需要注意的一点是,这种方法需要在HTML模板上添加ng-app=”myApp”,指定模块名才能使用:

<html ng-app="MyApp">
作者:EXDestroyer
A limbo for Helvin Leo
原文地址:AngularJS学习笔记, 感谢原作者分享。

发表评论