Angular 作用域scope的具体使用

网友投稿 297 2023-03-07


Angular 作用域scope的具体使用

Scope(作用域) 是应用在 HTML (视图) 和 javascript (控制器)之间的纽带。

Scope 是一个对象,有可用的方法和属性。

Scope 可应用在视图和控制器上。

$rootScope

每个Angularjs应用默认有一个根作用域--$rootScope, 根作用域位于最顶层,作为其他作用域的父作用域,可作用于整个应用中。

$scope

http://

scope(作用域)对应MVC模式的Model,是应用在HTML(视图)和javaScript(控制器)之间的纽带,可应用在视图和控制器上。

scope是表达式执行的上下文,同时作用域也是一个对象,有可用的方法和属性。

一、变量的取值和赋值

{{number}}

{{number}}

function parentCtrl($scope){

$scope.number = 1;

}

function childCtrl($scope){

}

效果:

界面上显示了两个1,但当我们点击按钮之后,childCtrl作用域内的数据改变了,parentCtrl作用域内的数据没有改变

分析:

①childCtrl作用域继承了parentCtrl作用域(类似于JavaScript的原型链继承),所以childCtrl作用域可以访问到parentCtrl的内容。

②点击按钮后childCtrl作用域就会创建一个number基础类型变量,当childCtrl已有某个基础类型变量就不会访问原型链。

解决:

①可以使用$parent来指定上

YKWitsYKCJ

级作用域改变

{{number}}

{{number}}

②使用引用类型变量,内外层作用域均是data对象的引用,修改对象的属性,引用的还是同一个变量。

{{data.number}}

{{data.number}}

function parentCtrl($scope){

$scope.data.number = 123';

}

function childCtrl($scope){

}

ng-if、ng-repeat、ng-switch、ng-include等指令也会产生新作用域

二、Directive中的作用域

.directive("myDirectiveYKWitsYKCJ", function () {

return {

restrict: "AE",

scope: {

name: '@myName',

age: '=',

changeAge: '&changeMyAge'

},

replace: true,

template: "

"我的名字是:
" +

"我的年龄是:
" +

"在这里修改名字:
" +

"" +

"

}

①scope:false

当scope设置为false的时候,我们创建的指令和父作用域(其实是同一个作用域)共享同一个model模型,所以在指令中修改模型数据,它会反映到父作用域的模型中。

②scope:true

当scope设置为true的时候,我们就新创建了一个作用域,只不过这个作用域是继承的父作用域;可以这样理解,我们新创建的作用域是一个新的作用域,只不过在初始化的时候,用了父作http://用域的属性和方法去填充我们这个新的作用域。它和父作用域不是同一个作用域。

③scope:{}

@ 这是一个单项绑定的前缀标识符

属性的名字要用-将两个单词连接,因为是数据的单项绑定所以要通过使用{{}}来绑定数据。

= 这是一个双向数据绑定前缀标识符

数据的双向绑定要通过=前缀标识符实现,所以不可以使用{{}}。

& 这是一个绑定函数方法的前缀标识符

属性的名字要用-将多个个单词连接。


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:概要设计接口设计(概要设计接口设计中用户接口)
下一篇:接口自动话测试用例(接口自动化测试方案详解)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~