问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

angularjs 绑定策略中属性为什么可以去掉中间的中划线

发布网友 发布时间:2022-04-25 16:12

我来回答

1个回答

热心网友 时间:2022-04-22 16:27

在angularjs的指令中存在着三种绑定策略,他们分别是’=’,’@’,’&’
全文讨论围绕下面这个例子,可在进入codepen编辑

See the Pen EjGbeB by Simplefatty (@Dreaking) on CodePen.
‘=’绑定策略
‘=or(=attr)’,双向绑定,将本地作用域上的属性同父级作用域上的属性进行双向的数据绑定。就像本地的数据双向绑定一样,本地属性会反映出父级数据模型中发生的变化,使用可以是=,自动绑定 or = attr(属性名);
控制器中,我定义了title和text的值,这里
<div class="body" ng-show="showMe" ng-transclude></div>1

ng-transclude 将指令包裹的内容放到了这段标签里面,即编译过后应该是
<div class="body" ng-show="showMe" ng-transclude>
<span class="ng-binding ng-scope">
{{text}}
</span>
</div>12345

使用可以是=,自动绑定 or = attr(属性名);
从上面的例子我们可以知道
scope : {
title: '=expanderTitle'
}123

指令内的title绑定的值为expanderTitle中定义的值,即title
于是我们可以在template中引用{{title}},这里的{{title}}便是在指令隔离作用域上的scope(指令的隔离作用域便是通过这种方式来跟父级作用域联系的),这里的scope也可以这样写
scope : {
expanderTitle: '='//自动绑定
}123

这时候如果在template中想引用控制器作用域上的title,则要将template中的{{title}}改成{{expanderTitle}},这里可以理解是在指令的隔离作用域上给了父作用域上的title一个别名expanderTitle
@’绑定策略
‘@(or @attr)’,本地作用域属性,使用@将本地作用域同DOM属性的值进行绑定。
这里如果把指令上的scope改成
scope : {
title: '@expanderTitle'//自动绑定
}123

这个时候的{{title}}的值就是在DOM属性中expanderTitle的值,即title
同样也可以这样写
scope : {
expanderTitle: '@'//自动绑定
}123

这个时候把{{title}}改成{{expanderTitle}}就跟上面效果一样;
‘&’绑定策略
& or(&attr)’,父作用域绑定,通过&符号可以对父作用域进行绑定,已变在其中运行函数。意味着对这个值进行设置时会生成一个指向父级作用域的包装函数。
这里把代码改一下,在指令scope中添加
onSend: '&'1

指令中的template改为
template : '<div>'
+ '<div class="title" ng-click="onSend()">{{title}}</div>'
+ '<div class="body" ng-show="showMe" ng-transclude></div>'
+ '</div>',1234

父级控制器中添加sendSomething方法
$scope.sendSomething=function(name){
alert(name);
}123

Dom中添加on-send的属性
<expander class='expander' on-send="sendSomething('something')" expander-title='title'>
{{text}}
</expander>123

这里便把指令中的onSend中的包装函数sendSomething在父级作用域中执行了,执行结果是弹出something;
同样这里的scope也可以改成 onSend:’&onSend’形式;
如果你跟着我也尝试着做了上面的这些东西,相信你也一定了解了angularjs指令中的三种绑定策略!
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
“泛览周王传”的出处是哪里 避事的意思是什么 怠息的意思是什么 “偷闲来此一嚬呻”的出处是哪里 怠息意思和来源是什么 客厅中间沙发旁旁边放什么 客厅沙发旁边放什么合适 沙发左右摆什么位置 淘宝网无法注册邮箱验证 谁能帮我注册一个谷歌帐号,我一直注册不成功,淘宝上也买不到,在线等... AngularJS中directive指令使用之事件绑定与指令交互用法示例 开发商预埋的下水管漏水责任谁负责? 预埋的水管漏水怎么办 厨房预埋在楼板之间的排污水管渗漏怎么修? 家里预埋水管漏水怎么办 pvc下水管漏水维修? 铸铁下水管生锈渗水,请教如何修理 英镑汇率走势 30天 预埋水管漏水如何处理 人民币汇率走势在哪看? 抖音在哪里修改售后退款理由 人民币汇率创3年半新高,人民币未来的走势如何? 工程图纸“A0+1/4=多少A1”? 一张A0 图纸可以裁成多少张 A3 图纸。 一张A0图纸等于多少张A3图纸? cad出图A0 A1 A2 A3 A4 字高都分别在多少范围呢? a0的图纸是多大 A0图纸是A4图纸幅面的几倍 为什么A0图纸尺寸不是1188X841 郑希怡穿的基础款都挺美,你觉得呢? AngularJS的数据双向绑定是怎么实现的 AngularJS双向绑定的选择,解决方法? Angularjs 中数据双向绑定是怎么实现的?原理是什么 Angular如何给动态生成的元素绑定事件 angularjs中的事件绑定指令有哪些 angularjs数据绑定 angularjs怎么绑定事件 angularjs怎么实现不同控制器下的div绑定 如何利用AngularJS绑定两个控制器并变量赋值 AngularJS如何给在JS中添加的DOM元素绑定事件? AngularJS的常见指令,来看看你知道几个嘞 什么是angularjs数据双向绑定 angularjs中使用指令,绑定监听是在什么时候 angularjs 自定义指令控制input只能输入数字和字母 angularjs 怎么调用directive指令 房地产信托融资模式有哪些? 房地产的BT信托模式靠谱吗 房地产信托机构发行信托产品成本有哪些?自己盈利模式是什么?利润占多少? 我国有房地产信托,国外也有,但只看到大家谈房地产投资信托基金(REITs)。 公司型房地产信托投资的特点