angular scope

本文详细介绍了AngularJS中Scope的工作原理及双向绑定机制,包括如何避免因child scope的生成而导致的绑定失败问题,并提供了几种解决方法。

今天看了一天angular, 渐渐有点起色了。


github wiki的文档没想到如此清楚 讲的是scope如何用

https://github.com/angular/angular.js/wiki/Understanding-Scopes


基本上scope跟DOM一样有inheritance. childscope能访问parentscope. 

当我们用ng-model实现双向绑定的时候,会有特别情况,即不能更改model里面的scope


简单来说,当你使用ng-include , ng-repeat, ng-view,ng-swith等操作时候,会生成一个childscope(比如在每个iteration里毫不知情地), 这时候view->model会创建在已经生成的childscope里面导致不能实现双向绑定。

解决方式有三种,


1.always use ‘.‘ in the model

2. use $.parent in the 'ng-model'

3. define a function in the $parent.scope :

// in the parent scope
$scope.setMyPrimitive = function(value) {
    $scope.myPrimitive = value;
}
另外scope 里面, '@someprop' 是单向绑定,’=someprop‘是双向绑定。s


<my-directive interpolated="{{parentProp1}}" twowayBinding="parentProp2"> and 
scope: { interpolatedProp: '@interpolated', twowayBindingProp: '=twowayBinding' } 

在不考虑isolated scope的情况下,

scope: { interpolatedProp: '@parentProp1', twowayBindingProp: '=parentProp2' } 

parentProp1改变导致interpolatedProp改变,反之不成立。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值