AngularJS中的控制器和作用域
欢迎大家指导与讨论 : )
一、 作用域的事件传播
一 . 1 修改的传播
关于作用域最重要的一点是修改会通过事件传播下去,自动更新所以依赖的数据值,即使是通过行为产生的。简而言之,就是即时您只修改了某个作用域中的某个属性(比如说$scope.data),那么依赖于$scope.data的一些行为(参数含有$scope.data的一些函数),都会重新执行计算。比如下面的这个例子,每当 <input> 被输入不同的对象, getCountry(city) 就会再次计算。
<input ng-model="city" />
<p>The country is {{getCountry(city)}}</p>
一 . 2 作用域间的通信
在树上不同作用域之间要怎么样才能进行通信呢?有一种解决方案是:通过构建依赖于$rootScope的服务,可以在向全树的作用域广播事件($broadcast)。而事件的接受可以通过,在所需要的作用域上设定对应的事件接收器来完成。
app.service("EventEmitter", function($rootScope){
    return {
       emitEvent: function(eventType){
            $rootScope.$broadcast(eventType.name)
       }
    }
})
app.controller("myCtrl", ['$scope', function($scope){
     $scope.$on(someEvent. function(){
     //...
    })
}])
二、 无作用域控制器
我们可以通过创建无作用域的控制器,来使该控制器断绝所有与其他控制器的联系,它不能继承父作用域中的任何东西。但同时它还能继续向视图中提供数据和行为。
app.controller("myCtrl", function(){//不再依赖$scope
        this.data = "Hello World";
    this.sayHello = function(){
      console.log(this.data)
   }
})
三、 与其他框架一起工作
当我们需要将新功能集成到一个已有的产品或服务中,而这个产品或服务已经使用了一个不同的框架时,我们需要AngularJS和这些框架能够顺利地协同工作。
即:在AngularJS的环境中能够顺利调用其他框架,而在其他框架的环境中也要能够调用AngularJS环境中的东西。
三 . 1 AngularJS中使用其他框架
$apply或$watch 能够让事件进入到AngularJS的运行环境中,当这个事件产生变化时,AngularJS能够感知得到,并进行进一步处理(脏检查)。例子——在AngularJS中调用JQueryUI的API
$scope.$apply(function(){
    $('#jqui button').button({
       disabled: !disabled;
   })
})
三. 2 在其他框架中调用AngularJS
为了能在其他框架中调用AngularJS,我们需要进入到AngularJS环境。此处我们需要查找到对应关联元素所在的作用域,我们需要使用scope(),而不是$scope。
$document.ready(function(){
    $('#jqui button').button().click(function(e){
       angular.element(someEle).scope().$apply(function(){
           someHandler();
      })
   })
})
参考资料
《AngularJS高级程序设计》
AngularJS中的控制器和作用域的更多相关文章
- AngularJS中的控制器示例_3
		<!doctype html> <html ng-app="myApp"> <head> <script src="C:\\Us ... 
- AngularJS中的控制器示例_2
		<!doctype html> <html ng-app="myApp"> <head> <script src="C:\\Us ... 
- AngularJS中的控制器示例
		<!doctype html> <html ng-app="myApp"> <head> <script src="C:\\Us ... 
- angularJS中如何写控制器
		angularJS中的控制器是一个函数,用来向视图作用域中添加额外的功能,我们用它来给作用域对象设置初始状态,并添加自定义行为 当我们在页面上创建一个新的控制器时,angularJS会生成并传递一个新 ... 
- 理解angularJS中作用域$scope
		angularJS中作用域是什么 作用域(scope)是构成angularJS应用的核心基础,在整个框架中都被广泛使用,因此了解它如何工作是非常重要的 应用的作用域是和应用的数据模型相关联的,同时作用 ... 
- angularjs 控制器、作用域、广播详解
		一.控制器 首先列出几种我们平常使用控制器时的几种误区: 我们知道angualrJs中一个控制器时可以对应不同的视图模板的,但这种实现方式存在的问题是: 如果视图1和视图2根本没有任何逻辑关系,这样& ... 
- AngularJS中控制器继承
		本篇关注AngularJS中的控制器继承,了解属性和方法是如何被继承的. 嵌套控制器中属性是如何被继承的? ==属性值是字符串 myApp.controller("ParentCtrl&qu ... 
- AngularJS入门基础——控制器
		AngularJS中的控制器是一个函数,用来向视图的作用域添加额外的功能.我们用它来给作用域对象设置初始状态,并添加自定义行为. AngularJS同其他JavaScript框架最主要的一个区别就是, ... 
- angularJS中控制器和作用范围
		$scope是$rootScope的子作用域控制对象,$rootScope的id为1,其他的为2,3,4... 不同的控制器之间,所对应的作用域控制对象$scope,之间是相互隔离的,如果要共享数据, ... 
随机推荐
- UI中一些不常用的控件UIActivityIndicatorView、UIProgressView、UISegmentedControl、UIStepper、UISwitch、UITextView、UIAlertController
			//UIActivityIndicatorView //小菊花,加载 #import "ActivityIndicatorVC.h" @interface ActivityIndi ... 
- Java基础知识学习(七)
			线程(续) 线程同步 当两个或两个以上的线程需要共享资源,它们需要某种方法来确定资源在某一刻仅被一个线程占用.达到此目的的过程叫做同步(synchronization) 可以用两种方法同步化代码.两者 ... 
- EasyUi 改变 selelct 的  下拉内容 div 的高度
			直接上 效果图: 修改之后的 滚动条高度: 代码: 源代码下载 
- lumen可以使用laravel-ide-helper
			1.laravel-ide-helper 地址https://github.com/barryvdh/laravel-ide-helper 在项目根目录执行composer安装命令 composer ... 
- SQL Server 2012 学习笔记5
			1. 索引(Index) 索引是快速的定位和查找数据.索引分为: 聚集索引:唯一,默认主键,一般选取比较连贯的字段,聚集索引是物理排序. 非聚集索引: 并没有把数据物理排序,只是多了一个索引页(包括索 ... 
- MSSQL OPTION语句详解
			一些联合表查询语句,这些表里都建立有索引.在没有加 option ( force order ) 前,整个查询费时40多秒,但 单独表 查询基本不到1秒.查看查询计划后发现查询过程是从table n开 ... 
- C#中标准Dispose模式的实现与使用(条目17 实现标准的销毁模式)
			实现了Dispose模式与实现了IDisposable接口的区别就是:IDisposable的实现的可靠性(释放相关资源)要靠编程人员来解决(你确信你从来都一直调用了Dispose(Close)方法吗 ... 
- Python使用QRCode模块生成二维码
			QRCode官网https://pypi.python.org/pypi/qrcode/5.1 简介python-qrcode是个用来生成二维码图片的第三方模块,依赖于 PIL 模块和 qrcode ... 
- NopCommerce 关于Customer的会员类别及会员价处理 的尝试途径
			示例效果: 当Customer是某个会员级别或内部员工时, 购物结算时享受一定的折扣: 相关设定如下: Step1.新增会员类别 Admin - Customers - Customer rol ... 
- URL和URI区别
			URI:Universal Resource Identifier,通用资源标识符: URL:Uniform Resource Locator,统一资源定位符: 其中,URL是URI ... 
