美文网首页
angularjs踩坑系列:ControllerAs之$ctrl

angularjs踩坑系列:ControllerAs之$ctrl

作者: 曦惜夕 | 来源:发表于2018-05-31 00:46 被阅读60次

    说了指令递归的坑,我们再来说说ControllerAs的坑吧。

    我一开始接触angularjs,已经是1.6版本,是1.x中的高版本。众所周知,在1.5之后,angularjs加入了component书写体验。在component中,我们的模板默认有一个叫$ctrl的组件Controller实例对象绑定在$scope中。在习惯了高版本的这种书写体验后,我参与了一个,低版本项目,于是乎,我觉得我在ng坑的道路上越走越远了。。。

    1.3版本之后,angularjs推出ControllerAs的语法,意在创建一个Controller的实例来避免由$scope带来的作用域混乱的问题(这也是个坑,下一篇文章我们详细谈一下$scope的坑)。

    话说这个问题时如何发现的,本人在遇到指令递归坑的时候曾经测试过版本兼容的问题,我将自己demo中ng的版本降至了1.4.6来查看指令递归是否与版本有关系时,以外的发现我之前写的xxController as $ctrl居然意外报错了。。。

    
    <div ng-app="text">
    <div ng-controller="testController as $ctrl"></div>
    </div>
    <script src="angular-1.4.6.js"></script>
    <script>
        angular.module('text',[]).controller('testController', function () {
            var $ctrl = this
            console.log($ctrl);
        })
    </script>
    



    错误内容如下:

    chrome报错信息

    由错误信息可以看出,别名中是不允许有$符号存在的。当版本升至1.4.9时,便没有这个问题了。

    总结

    由于并没有测试1.4.7与1.4.8这两个版本,我不便妄加断言,可以肯定的是1.4.9以上,在ControllerAs的别名中可以有$符号存在。

    相关文章

      网友评论

          本文标题:angularjs踩坑系列:ControllerAs之$ctrl

          本文链接:https://www.haomeiwen.com/subject/pcjfsftx.html