终于考完试了,在没更新的这一段时间里,一直都在忙于应付考试。不过在期间也是接触到不少好玩的东西,比如Html5的Canvas,我用lufylegend的Html5引擎做了个《看你有所色》的游戏。还有最近刚开始玩的Angular。

  Angular也是早有听说了啊,一直没闲下功夫研究,趁着放假,学一学。慕课网(www.imooc.com)里有一套教程,还是很不错的。但是真正上手编码的时候就发现,尼玛!例子都跑不起来,全是报错,Argument 'xxx' is not a function, got undefined是最显眼的错误。我们先来看看教程中的“错误”代码是怎样的。

  来一个最简单的 Hello World 吧!

  我们一般接触到的第一个入门教程都是类似与这样的,代码简单。我们有个ng-app作为Angular的启动口,然后ng-controller="helloCtrl"控制p标签。View层,则用双花括号出入数据greeting的message值。然后在下面的script定义了一个helloCtrl的函数,并为$scope.greeting赋了值。这一切看起来都是那么自然,想象中,浏览器就该出现,"Hello, World!"。可惜的是,浏览器给了我们这样的回复。

  

  没错,这就是开头所说的那个。于是我弄不懂,为什么老师可以跑通,我却跑不通,大家都是Angular-1.3.0。国内不给力,很难找到答案,最后去StackOverflow找到了。因为从Angular-1.3.0 beta15开始,Angular不再支持全局的Controller!那么问题来了,如何在Angular里定义模块呢?

  当然这篇blog是为了让大家学习Angular的时候别遇到闭门羹,我大致说一下。AngularJs里,有一个angular.module,模块机制就是靠这个来加载的。我们来看看如何可以重新出现梦寐以求的“Hello World”。

  

  我们看看,改了什么,ng-app="myApp"首先给入口赋了名字,然后再下面进行模块的初始化。在angular.module(String, moduleArray)函数里,第一个String参数是该模块的名字,第二个参数是所依赖的模块(这里暂时用不着),返回了myApp这个模块,然后再通过模块的controller方法定义helloCtrl控制器即可。

  当然我们要解释依赖模块的话,我们可以看一下稍作修改的第三版Demo

仅仅是多定义一个helloController模块,这样myApp,就可以仅仅作为启动口,而不会混杂着控制器。我们可以定义多个js文件,清晰明确的通过模块梳理整个项目的结构。

Argument 'xxx' is not a function, got undefined,初学Angular的第一个坑的更多相关文章

  1. Error: [ng:areq] Argument 'xxxx' is not a function, got undefined

    "Error: [ng:areq] Argument 'keywords' is not a function, got undefined" 代码类似这样的: <div n ...

  2. Error: [ng:areq] Argument ‘AppCtrl’ is not a function, got undefined

    今天把用ionic做一个案例,和ionic示例项目差不多,只是用requirejs分离了controller,但是一直报错 Error: [ng:areq] Argument ‘AppCtrl’ is ...

  3. [ng:areq] Argument 'XXXXCtrl' is not a function, got undefined

    angular.module('MyApp', []) 这里的[]重复了,以后引入新的controller.js文件会覆盖前面那个,所以此处的[]去掉 .controller('MyCtrl', fu ...

  4. 【AngularJs】---"Error: [ng:areq] Argument 'fn' is not a function, got undefined"

    项目中把controller.service抽取出来 一步一步没有报错 index那里加 <script src="js/controllers/XXController.js&quo ...

  5. Error: [ng:areq] Argument 'LoginCtrl' is not a function, got undefined

  6. jquery源码中的(function(window, undefined){})(window)【转】

    (function( window, undefined ) {})(window);这个,为什么要将window和undefined作为参数传给它? (function( $, undefined ...

  7. JS 关于(function( window, undefined ) {})(window)写法的理解

    JS 关于(function( window, undefined ) {})(window)写法的理解 [网络整理] (function( window, undefined ) {})(windo ...

  8. 关于jQuery源码中(function(window,undefined){//dosomething()})(window)写法解释

    一.首先是最常见的闭包 (Closure) 范式自执行函数的写法,这里用匿名函数封装(构造块级作用域),避免了匿名函数内部的代码与外部之间发生冲突(如使用了相同的变量名). (function() { ...

  9. jQuery 1.4.4 中 function( window, undefined ) 写法原因

    读 jQuery 1.4.4 版本代码的时候,发现下面的写法: (function( window, undefined ) { ... // code goes here })(window); w ...

随机推荐

  1. JNIEnv解析

    1.关于JNIEnv和JavaVM JNIEnv:线程相关的变量 JavaVM:是虚拟机在JNI层的代表, JNIEnv是一个与线程相关的变量,不同线程的JNIEnv彼此独立.JavaVM是虚拟机在J ...

  2. apk反编译(1)用apktool破解apk

    1,下载 http://ibotpeaches.github.io/Apktool/ 2,破解 把下载的apktool_2.0.3.jar 和 weixin638android680.apk  拷贝到 ...

  3. 通俗易懂的讲解iphone视图控制器的生命周期

    IOS 视图控制器的生命周期非常非常重要,所以我有必要写个文章来和大家一起探讨问题. 今天在学习视图控制器的生命周期,也看了一下网上的一些资料,但总觉得不是那么好理解,首先我们来看一张图: 先粗略讲一 ...

  4. EasyUi datagrid 单选框选中事件

    Easyui datagrid中的单选框默认是这样定义的 columns: [[ { field: 'CK', title: '', checkbox: true, width: 30 }]]. 平常 ...

  5. ASP.NET MVC 传值方法ViewData与ViewBag的区别

    一.介绍 在Asp.net MVC 3 web应用程序中,我们会用到ViewData与ViewBag,对比一下: ViewData ViewBag 它是Key/Value字典集合 它是dynamic类 ...

  6. poj 1364 King(差分约束)

    题意(真坑):傻国王只会求和,以及比较大小.阴谋家们想推翻他,于是想坑他,上交了一串长度为n的序列a[1],a[2]...a[n],国王作出m条形如(a[si]+a[si+1]+...+a[si+ni ...

  7. Android Broadcast Receiver

    说明 有时候我们在做android系统软件的时候,经常会需要做的事就是开机重新设置上次关机前的状态,当然,我们就会用到这个开机广播: <uses-permission android:name= ...

  8. $http POST 转字符串

  9. linux面试题1

    一.填空题:1. 在Linux系统中,以 文件 方式访问设备 .2. Linux内核引导时,从文件 /etc/fstab 中读取要加载的文件系统.3. Linux文件系统中每个文件用 i节点 来标识. ...

  10. sharepoint 2010 在aspx 写lambda 时错误

    在sharepoint 2010 中,写lambda时,遇到错误.在aspx里面,写lambda表达式, 运行时报错,就不明道理了.经过百般测试,终于找到方法: 错误提示: "/" ...