美文网首页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造成的作用域问题

    使用angularjs开发,有时候页面太大,代码行数太多,这时候会造成代码难以维护,以及查找和阅读代码变得越来越困...

  • ng-if

    ng-if会(隐式地)产生新作用域,ng-switch、 ng-include等会动态创建一块界面的也是如此。这样...

  • 块级绑定

    因为ES6之前存在变量提升问题,容易造成问题,ES6引入了块级作用域。 块级声明 块级作用域在函数或者块({})中...

  • 「JS」变量作用域

    作用域介绍静态作用域动态作用域 JavaScript 变量作用域词法环境组成创建结构关于词法环境的问题with 语...

  • JavaScript散乱(四、细节)

    js高级 案例问题 作用域和作用域链 全局作用域也就是window和函数作用域,不考虑es6的块级作用域前提下,作...

  • 从作用域出发解决知识点

    作用域 何为作用域,这种问题其实很难受,绝大部分人对于作用域没有太多的概念,更多的是对于局部作用域和全局作用域的区...

  • 第八节: JavaScript中this指向问题

    1. this指向问题 1.1 认识词法作用域 其实我们js中的作用域就是词法作用域,我们会发现词法作用域最重要的...

  • 第八节 JavaScript中this指向问题

    this指向问题 1.1 认识词法作用域 其实我们js中的作用域就是词法作用域,我们会发现词法作用域最重要的特征是...

  • 【新手向】ES6常见概念初体验

    一、var和let命令 作用域  ES5的作用域只有全局作用域和函数作用域,这会带来很多问题,比如常用的for循环...

  • 作用域问题

    --前言 写在前面,想介绍一下变量的作用域的问题。关于作用域来说最主要是了解在不同的环境下,变量的作用域会发生变化...

网友评论

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

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