Angular版本升级造成controller未定义的问题

本文分享了作者在学习Angular过程中遇到的问题及解决方案,特别是在Angular 1.3.0版本中遇到的“Argument'xxx'isnotafunction,gotundefined”错误,并介绍了如何正确地使用模块和控制器。

本文转http://www.cnblogs.com/YikaJ/p/4226313.html

Argument 'xxx' is not a function, got undefined,初学Angular的第一个坑

  终于考完试了,在没更新的这一段时间里,一直都在忙于应付考试。不过在期间也是接触到不少好玩的东西,比如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文件,清晰明确的通过模块梳理整个项目的结构。

升级Angular版本的步骤可以根据具体情况而定。一般来说,如果没有涉及到复杂的Angular技术,可以按照以下步骤进行升级: 1. 运行命令`ng update @angular/core @angular/cli`,这将把Angular升级到最新的版本(比如11)。 2. 运行命令`ng update @angular/material`,这将升级Angular Material到与Angular版本相匹配的最新版本。 3. 确保你的TypeScript版本升级到4.0,因为新版本的Angular需要使用TypeScript 4.0。 4. 注意,新版本的Angular不再支持IE9、IE10和IE移动版。如果你的项目中使用了这些浏览器,需要考虑兼容性问题。 总结来说,升级Angular版本可以通过运行相应的命令来实现。官方提供了升级指导页面\[2\],你可以根据你的项目版本和要升级到的版本选择相应的步骤。同时,如果你使用了Angular Material等第三方框架,可以确保它们与Angular版本保持同步升级。另外,建议在升级之前先了解一下新版本的变化和可能的兼容性问题,以避免出现意外情况。 #### 引用[.reference_title] - *1* *2* *3* [Angular入门到精通系列教程(6)- Angular的升级](https://blog.youkuaiyun.com/weixin_43288714/article/details/112476713)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^koosearch_v1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值