美文网首页AngularJS开发WebApp
anjularjs ng-include造成的作用域问题

anjularjs ng-include造成的作用域问题

作者: 陨石坠灭 | 来源:发表于2018-07-05 10:34 被阅读2次

    使用angularjs开发,有时候页面太大,代码行数太多,这时候会造成代码难以维护,以及查找和阅读代码变得越来越困难。而html页面就可以用ng-include将代码代码进行分页,但是ng-include自带作用域,很可能造成网页无法造成运行的后果。

    接下来,说一下我的处理方式:

    • 方法一:使用controller别名

    在声明ng-controller时这样写:

    <div ng-controller="indexController as index" >
    ...
    </div>
    

    然后在indexController中使用this来定义变量,而不是$scope,这样indexController的所有子作用域都能通过index.来使用变量了,而不需要担心用ng-include分离代码时作用域造成的困恼。

    • 方法二:在子作用域实现父作用域的方法(钩子方法)

    这个方法可以运用于表单。

    <form name="myForm">
    ...
    </form>
    

    在indexController的js代码中可以直接用$scope.myForm来操作表单,但是要初始化后才能使用。如果表单的html代码放在了ng-include包含的作用域中,那么就不能获取到表单了

    解决办法:

    在indexController的js代码写上空方法:

    this.getMyForm = function(){
      return  null;
    };
    

    然后使用ng-include的页面也说明一个controller

    <div ng-controller="subController" >
    ...
    </div>
    

    在subController的js代码中写道:

    $scope.index.getMyForm = function(){
      return $scope.myForm;
    };
    

    当然,在indexController要获取myForm使用this.getMyForm()就可以了,使用之前要记得判空。

    相关文章

      网友评论

        本文标题:anjularjs ng-include造成的作用域问题

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