全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

Angularjs中三种数据的绑定策略(“@”,“=”,“&”)

前言

我们想要实现这样的效果:当我们点击标题的时候展示下面的内容,再点击则收回去。

一、首先回顾一下有哪些绑定策略?

看这个实在是有点抽象了,我们来看具体的实例分析吧!

二、简单的Demo实例

@绑定:传递一个字符串作为属性的值。

比如 str : ‘@string'

控制器中代码部分示例:

myDirec.controller('MyCtrl3',['$scope',function($scope){
 $scope.ctrlFlavor="鸡尾酒";
 
 $scope.sayHello=function(name){
 alert("Hello "+name);
 };
 
}]);

myDirec.directive("drink",function(){
 return{
  restrict:'AE',
  scope:{
  flavor:'@' //自动绑定,传递的是字符串
  },
  template:"<div>{{flavor}}</div>",
 };
});

页面中使用标签部分示例:

<div ng-controller="MyCtrl3">
 <drink flavor="{{ctrlFlavor}}"></drink>
 </div>

分析我们在drink指令中为什么能取得在父作用域中的值呢?原因就在于我们使用了@绑定策略,可以将ctrlFlavor赋值给flavor,这样在模板中就能取到该值了。

=绑定:指定获取属性的类型为父作用域的属性

myDirec.directive("drink2",function(){
 return{
 restrict:'AE',
 scope:{
  flavor:'=' //自动绑定
 },
 template:'<input type="text" ng-model="flavor"/>'
 };
});

页面:

<div ng-controller="MyCtrl3">
 <drink2 flavor="ctrlFlavor"></drink2>
 </div>

执行的流程是这样的:

  ① 指令被编译的时候会扫描到template中的模型发现有一个flavor,

  ② 查找scope中是否定义:通过=与父作用域绑定,方式是传递父作用域中的属性ctrlFlavor;

  ③ flavor与父作用域中的ctrlFlavor属性绑定,找到它的值“鸡尾酒”;

  ④ 将model的值显示在模板中。

&绑定:传递的是父作用域中的函数

控制器部分:

myDirec.directive("greeting", function() {
 return {
 restrict:'AE',
 scope:{
  greet:'&'
 },
 template:'<input type="text" ng-model="userName" /><br/>'+
   '<button ng-click="greet({name:userName})">问候一下</button><br/>'
 };
});

页面部分:

<div ng-controller="MyCtrl3">
  <greeting greet="sayHello(name)"></greeting>
  <greeting greet="sayHello(name)"></greeting>
  <greeting greet="sayHello(name)"></greeting>
</div>

从结果上看,三个输入框中的内容互不影响,因为都是新的独立作用域,能够完成从视图到模型的绑定。

三、Expander示例

首先看控制器代码:

/*Expander示例*/
myDirec.controller('SomeController',function($scope) {
 $scope.title = '点击展开';
 $scope.text = '这里是内部的显示的内容';
});

myDirec.directive('expander', function() {
 return {
 restrict : 'EA',
 replace : true,
 transclude : true,
 scope : {
  title : '=expanderTitle'
 },
 template : '<div>'
   + '<div class="title" ng-click="toggle()">{{title}}</div>'
   + '<div class="body" ng-show="showMe" ng-transclude></div>'
   + '</div>',
 link : function(scope, element, attrs) {
  scope.showMe = false;
  scope.toggle = function() {
  scope.showMe = !scope.showMe;
  };
 }
 };
});

再看页面部分:

<div ng-controller='SomeController'>
 <expander class='expander' expander-title='title'> {{text}} </expander>
 </div>

执行的流程是这样的:

  ① 指令被编译的时候会扫描到template中的模型发现有一个{{title}},

  ② 查找scope中是否定义:通过=与父作用域绑定,方式是传递父作用域中的属性;

我总是在这里犯糊涂,解释下这个“方式是传递父作用域中的属性”,这个在哪里用的呢?

<div ng-controller='SomeController'>
 <expander class='expander' expander-title='title'> {{text}} </expander>
 </div>

看到没,指令中的属性expander-title='title',这不就是传递父作用域中的属性吗?

  ③ expander-title与父作用域中的title属性绑定,找到它的值“点击展开”;

  ④ 将title的值显示在模板中。

注意:指令中的独立作用域中的属性title是为了给下面的模板使用 的,而title所对应的值,要依据页面中指令的使用传人具体的父作用域中的属性,完成属性的绑定操作。

总之、我们可以利用angularjs为我们提供的数据绑定策略来实现从父作用域向指令中传值,这个很有用哦!

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流。


# angularjs  # 绑定策略  # angularjs的数据绑定  # 绑定数据  # AngularJS指令中的绑定策略实例分析  # 详解angularjs中的隔离作用域理解以及绑定策略  # 详解angularJs指令的3种绑定策略  # angularjs指令之绑定策略(@、=、&)  # angularJS 中$scope方法使用指南  # AngularJS中监视Scope变量以及外部调用Scope方法  # 深入解析AngularJS框架中$scope的作用与生命周期  # AngularJs Scope详解及示例代码  # 浅谈AngularJs指令之scope属性详解  # AngularJS中scope的绑定策略实例分析  # 绑定  # 的是  # 是这样  # 都是  # 发现有  # 在这里  # 就能  # 上看  # 当我们  # 再看  # 这篇文章  # 来实现  # 可以利用  # 就在于  # 框中  # 中为  # 到该  # 很有用  # 为父  # 再点 


相关文章: 沈阳制作网站公司排名,沈阳装饰协会官方网站?  如何基于PHP生成高效IDC网络公司建站源码?  如何挑选优质建站一级代理提升网站排名?  ,南京靠谱的征婚网站?  如何做静态网页,sublimetext3.0制作静态网页?  c# Task.ConfigureAwait(true) 在什么场景下是必须的  如何选择香港主机高效搭建外贸独立站?  如何通过FTP空间快速搭建安全高效网站?  全景视频制作网站有哪些,全景图怎么做成网页?  如何高效生成建站之星成品网站源码?  南平网站制作公司,2025年南平市事业单位报名时间?  深圳网站制作的公司有哪些,dido官方网站?  如何制作网站标识牌,动态网站如何制作(教程)?  天津个人网站制作公司,天津网约车驾驶员从业资格证官网?  网站图片在线制作软件,怎么在图片上做链接?  网站海报制作教学视频教程,有什么免费的高清可商用图片网站,用于海报设计?  音乐网站服务器如何优化API响应速度?  制作网站怎么制作,*游戏网站怎么搭建?  岳西云建站教程与模板下载_一站式快速建站系统操作指南  如何选择可靠的免备案建站服务器?  详解免费开源的.NET多类型文件解压缩组件SharpZipLib(.NET组件介绍之七)  兔展官网 在线制作,怎样制作微信请帖?  如何快速查询网址的建站时间与历史轨迹?  建站之星导航配置指南:自助建站与SEO优化全解析  公司网站建设制作费用,想建设一个属于自己的企业网站,该如何去做?  北京制作网站的公司,北京铁路集团官方网站?  建站主机如何选?性能与价格怎样平衡?  网站微信制作软件,如何制作微信链接?  建站之星后台管理如何实现高效配置?  C++如何使用std::optional?(处理可选值)  如何用美橙互联一键搭建多站合一网站?  制作网站的模板软件,网站怎么建设?  视频网站app制作软件,有什么好的视频聊天网站或者软件?  如何快速打造个性化非模板自助建站?  制作公司内部网站有哪些,内网如何建网站?  如何在新浪SAE免费搭建个人博客?  电商平台网站制作流程,电商网站如何制作?  图册素材网站设计制作软件,图册的导出方式有几种?  建站主机CVM配置优化、SEO策略与性能提升指南  如何快速重置建站主机并恢复默认配置?  武汉网站如何制作,黄黄高铁武穴北站途经哪些村庄?  如何规划企业建站流程的关键步骤?  图片制作网站免费软件,有没有免费的网站或软件可以将图片批量转为A4大小的pdf?  建站之星会员如何解锁更多建站功能?  如何在IIS中新建站点并配置端口与IP地址?  实现点击下箭头变上箭头来回切换的两种方法【推荐】  建站主机选购指南与交易推荐:核心配置解析  h5在线制作网站电脑版下载,h5网页制作软件?  保定网站制作方案定制,保定招聘的渠道有哪些?找工作的人一般都去哪里看招聘信息?  在线ppt制作网站有哪些软件,如何把网页的内容做成ppt? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。