`
西南吹风
  • 浏览: 9033 次
文章分类
社区版块
存档分类
最新评论

AngularJS控制器的继承机制

 
阅读更多
<!doctype html>
<html ng-app="myApp">
<head>
<script src="http://cdn.bootcss.com/angular.js/1.3.12/angular.min.js"></script>
<script src="http://cdn.bootcss.com/angular-i18n/1.2.15/angular-locale_zh-cn.js"></script></head>
<body>

  <div ng-controller="SomeCtrl">
    {{ someBareValue }}
    <button ng-click="someAction()">Communicate to child</button>
    <div ng-controller="ChildCtrl">
      {{ someBareValue }}
      <button ng-click="childAction()">Communicate to parent</button>
    </div>
  </div>

  <script>
    angular.module('myApp', [])
    .controller('SomeCtrl', function($scope) {
      // anti-pattern, bare value
      $scope.someBareValue = 'hello computer';
      // set actions on $scope itself, this is okay
      $scope.someAction = function() {
        $scope.someBareValue = 'hello human, from parent'+Math.random();
      };
    })
    .controller('ChildCtrl', function($scope) {
      $scope.childAction = function() {
        $scope.someBareValue = 'hello human, from child';
      };
    });
  </script>

</body>
</html>

 

 

这个例子的变量。这个例子中,在已有的 控制器中嵌套了第二个控制器,并且没有设置模型对象的属性。

由于原型继承的关系,修改父级对象中的someBareValue会同时修改子对象中的值,但反之则不行。可以看下这个例子的实际效果,首先点击child button,然后点击parent button。这个例子充分说明了子控制器是复制而非引用someBareValue。 

 

运行一下,即可看出效果。自己整理笔记,搜到的,给你参考。

分享到:
评论

相关推荐

    AngularJS控制器继承自另一控制器

    但是要注意,过度依赖控制器继承可能导致作用域的复杂性增加,因此在实际开发中,应适度使用,并结合其他设计模式,如服务(Services)和指令(Directives),以创建更健壮和可扩展的应用程序。

    AngularJS控制器controller正确的通信的方法

    AngularJS是一款前端JavaScript框架,它由Google维护,并且以MVC(模型-视图-控制器)的设计理念为基础,主要用于开发动态网页应用。在AngularJS中,控制器(controller)是用来管理视图状态和行为的函数,与传统的...

    详解angularjs中如何实现控制器和指令之间交互

    1. **作用域继承**:指令和与其关联的控制器共享相同的$scope,允许它们之间进行数据和方法的通信。 2. **自定义属性**:通过在指令上添加自定义属性,我们可以指定调用哪个控制器的方法。 3. **`scope.$eval`**:`$...

    创建你自己的angularjs

    首先,AngularJS是基于MVC(模型-视图-控制器)架构的JavaScript框架,由Google维护。它通过双向数据绑定、依赖注入、指令系统、过滤器、服务等核心概念,实现了快速开发动态网页应用的能力。在构建自定义框架的过程...

    AngularJS高级编程(含源码)

    6. **控制器**:在AngularJS中,控制器是与视图交互的主要部分,用于处理用户输入和更新模型数据。 7. **表达式**:AngularJS 使用{{ }}包裹的表达式将JavaScript表达式插入到HTML中,动态渲染视图。 8. **过滤器*...

    Build Your Own Angularjs

    Scope对象是AngularJS应用程序中的关键组件,它作为控制器和视图之间的桥梁。每个AngularJS应用程序都有一个根Scope,它是所有其他Scopes的父级。Scope对象可以被扩展或继承,从而创建出一个层次结构。 - **属性和...

    Build Your Own Angularjs.pdf

    作用域构成了控制器与视图之间的桥梁,控制器的作用域可以影响其视图,反之亦然。作用域的创建、继承和销毁是构建AngularJS应用的基础。学习作用域的工作机制,包括如何通过$watch和$digest循环进行数据追踪、脏值...

    angularjs1.2最新

    6. **路由服务**:AngularJS 1.2的路由功能使得在SPA中导航变得简单,通过配置URL映射到特定的视图和控制器,实现页面间的平滑切换。 7. **$http服务**:用于处理HTTP请求,1.2版本在错误处理和响应处理上做了优化...

    Angularjs实现控制器之间通信方式实例总结

    本文将深入探讨两种主要的AngularJS控制器间通信方式:使用服务和基于事件广播的方式。 首先,我们来看**基于服务的方式**。在AngularJS中,服务是一个单例对象,这意味着无论何时通过依赖注入创建服务,都会返回...

    AngularJS开发教程之控制器之间的通信方法分析

    本文将探讨AngularJS中控制器之间的通信方法,并结合实例进行详细分析,主要包括以下几种方式:基于scope的继承、基于事件的传播、以及使用service(单例模式)来实现控制器间的通信。 首先,基于scope的继承是最...

    angularJS学习资料总结

    4. 模块:模块是组织AngularJS应用的基本单位,可以包含控制器、服务、指令等组件。 5. 控制器:控制器是应用逻辑的主要载体,用于处理用户输入和业务逻辑。 6. 过滤器:过滤器用于格式化数据,如日期格式化、货币...

    AngularJS语法详解(续)

    以上内容概述了AngularJS的一些核心概念,包括ng-src和ng-href属性的使用、表达式的执行机制、控制器的职责、数据模型的暴露和监控,以及双向数据绑定。AngularJS不仅提供了丰富的指令和数据绑定功能,还允许开发者...

    AngularJs14-16

    隔离作用域是AngularJS中一个强大的特性,它允许我们在指令中创建独立的作用域,不直接继承父级控制器的 `$scope`。这样可以防止指令与全局作用域的冲突,提高代码的可重用性和封装性。隔离作用域通过`&`, `@`, `=`...

    angularjs1.4js类库

    2. **ControllerAs语法**:为了更好地遵循面向对象编程的原则,1.4版本推荐使用`controllerAs`语法,将控制器实例绑定到视图的特定作用域变量,使得代码更加清晰和易于理解。 3. **$http服务增强**:$http服务在1.4...

    详解JavaScript的AngularJS框架中的作用域与数据绑定

    这种继承机制有助于在控制器之间共享数据和行为。在AngularJS中,作用域的层次结构与HTML元素的层次结构大致相同,这样可以在不同的作用域层次中实现视图的动态更新。 创建作用域的方式多种多样,ng-app指令可以...

    AngularJS 0005:作用域

    每个控制器(Controller)都有一个关联的作用域,而这些作用域可以有子作用域。当创建一个新的控制器时,会默认创建一个新的作用域,它成为父作用域的子作用域。这种层级关系使得数据可以在不同层级之间共享和传递。...

    AngularJS中的控制器之间的通讯

    7. **注入服务**:AngularJS允许你通过依赖注入(Dependency Injection,DI)机制,将一个控制器中的服务暴露给另一个控制器。这种方式确保了数据和功能的隔离,提高了代码的可测试性。 8. **AngularJS事件系统**:...

    angularjs基本概念全

    **AngularJS基本概念...以上内容仅是AngularJS基础知识的概览,实际使用中还需要深入学习依赖注入、过滤器、服务、工厂、控制器等更多概念。在AngularJS pdf资料中,你将找到更详细的信息,帮助你全面掌握这个框架。

    AngularJS 事件发布机制

    在AngularJS中,这通常需要操作两个不同的作用域:一个是用于显示消息的控制器作用域,另一个是用于显示未读消息计数的指令作用域。 在文章中提到的问题场景下,初始的实现方法是将未读消息计数存储在缓存中。每次...

Global site tag (gtag.js) - Google Analytics