directive——scope选项与绑定策略

scope 有true(以强制创建一个单独的范围) 和 false (default);

当scope选项写为scope:{}这种形式的时候,就已经为指令生成了隔离作用域,现在,我们来看看绑定策略的三种形式:& 、= 、@。

指令代码:

angular.directive(‘myDirective‘, function(){
  return {
   ...
    scope: {
      obj1: ‘=‘,
      obj2: ‘@‘,
      obj3: ‘&‘
    }
    ...
  };
});

绑定策略一   @ :

它与{ { } }一起使用,并且将始终返回一个字符串。

<my-directive ob1=‘{{ vm.msg }}‘></my-directive>

它将本地作用域和DOM中的属性值绑定起来(且这个属性的值必须是父级作用域中的),说的简单一点就是假设你在模板中有个双花括号表达式,然后我们把表达式里的内容和html中指令里特定名字的属性绑定起来,看看下面的代码:

directive("direct",function(){

        return{

            restrict: ‘ECMA‘,

            template: ‘<div>指令中:{{ name }}</div>‘,

            scope:{

              name:‘@forName‘

            }
         }
  })
.controller("nameController",function($scope){
      $scope.Name="张三";
});
html 代码:
<div ng-controller="nameController">
   <direct for-name="{{ Name }}"></direct>
<div>

{{ name }}成功地与父控制器中的Name绑定起来了。当然这里也可以这样写name:‘@‘ 这样写的话,就默认DOM中的属性名为name了意

即 for-name="{{ Name }}"可简写为name="{{ Name }}";

绑定测量二   = :

使用对象的引用,而不是单纯的字符串,这也是=可以进行双向绑定的关键。

它传递一个引用到您的指令中的对象。它可以表达与分离的范围同步的属性,从而允许双向绑定。

<my-directive obj1=‘vm.someObject‘></my-directive>

js 代码:

directive("direct",function(){

        return{

            restrict: ‘ECMA‘,

            template: ‘<div>指令中:<input ng-model="model"/></div>‘,

            scope:{

              model:‘=‘

            }

         } 

  })

.controller("nameController",function($scope){

      $scope.data=[{name:"张三"},{name:"李四"}]; 

});

html 代码:

<div ng-controller="nameController">

        <input ng-model="mark"/>

        <direct model="mark"/></direct>
 </div>

绑定测量三  @:

它的含义是:对父级作用域进行绑定,并将其中的属性包装成一个函数,注意,是属性,意即,任何类型的属性都会被包装成一个函数,比如一个单纯的字符串,或是一个对象数组,或是一个函数方法。

在该指令中,它将作为一个函数,即在调用时执行通过表达式。使用它

如下代码 :

<my directive callback=‘vm.showAlert(‘Hi‘)‘></my-directive>

js指令:

return {
    ...
    scope: {
        callback: ‘&‘
    },
    template: ‘<button ng-click=‘callback()‘>Click</button>‘
    ...
}

总结:

为指令创建隔离作用域的同时,还能访问到父级中的属性 ,可以集成和扩展第三方插件

				
时间: 2024-12-26 12:30:45

directive——scope选项与绑定策略的相关文章

AngularJS学习笔记之directive——scope选项与绑定策略

开门见山地说,scope:{}使指令与外界隔离开来,使其模板(template)处于non-inheriting(无继承)的状态,当然除非你在其中使用了transclude嵌入,这点之后的笔记会再详细记录的.但是这显然不符合实际开发中的需求,因为实际上,我们经常想要我们的指令能够在特定的情况下与外界进行数据上的交互,这就需要借助绑定策略之手了. 大家知道,当scope选项写为scope:{}这种形式的时候,就已经为指令生成了隔离作用域,现在,我们来看看绑定策略的三种形式:& .= .@. 首先是

AngularJS学习笔记之directive&mdash;scope选项与绑定策略

From:http://www.linuxidc.com/Linux/2015-05/116924.htm scope:{}使指令与外界隔离开来,使其模板(template)处于non-inheriting(无继承)的状态,当然除非你在其中使用了transclude嵌入,这点之后的笔记会再详细记录的.但是这显然不符合实际开发中的需求,因为实际上,我们经常想要我们的指令能够在特定的情况下与外界进行数据上的交互,这就需要借助绑定策略之手了. 大家知道,当scope选项写为scope:{}这种形式的时

Angular学习心得之directive——scope选项与绑定策略

开门见山地说,scope:{}使指令与外界隔离开来,使其模板(template)处于non-inheriting(无继承)的状态,当然除非你在其中使用了transclude嵌入,这点之后的笔记会再详细记录的.但是这显然不符合实际开发中的需求,因为实际上,我们经常想要我们的指令能够在特定的情况下与外界进行数据上的交互,这就需要借助绑定策略之手了. 大家知道,当scope选项写为scope:{}这种形式的时候,就已经为指令生成了隔离作用域,现在,我们来看看绑定策略的三种形式:& .= .@. 首先是

Angular中directive——scope选项与绑定策略,这个也经常迷惑的。

开门见山地说,scope:{}使指令与外界隔离开来,使其模板(template)处于non-inheriting(无继承)的状态,当然除非你在其中使用了transclude嵌入,这点之后的笔记会再详细记录的.但是这显然不符合实际开发中的需求,因为实际上,我们经常想要我们的指令能够在特定的情况下与外界进行数据上的交互,这就需要借助绑定策略之手了. 大家知道,当scope选项写为scope:{}这种形式的时候,就已经为指令生成了隔离作用域,现在,我们来看看绑定策略的三种形式:& .= .@. 首先是

《AngularJS》——scope的绑定策略

scope这个对象在Angular中非常重要,可以说要想学好AngularJS,熟练使用Scope时基本功,下面介绍一下Scope的几种绑定策略. 1.@:把当前的属性作为字符串传递.你还可以绑定来自外层的scope的值,在属性值中插入{{}}即可.下面是代码. <!DOCTYPE html> <html ng-app="MyModule"> <head> <meta charset="UTF-8"> <titl

[email&#160;protected]独立作用域scope绑定策略之&amp;符策略

1.index.html: <!DOCTYPE HTML><html ng-app="app"><head>    <title>scopeAt</title>    <meta charset="utf-8">        <link rel="stylesheet" href="../css/bootstrap.css">    <

angularjs 指令—— 绑定策略(@、=、&amp;)

angularjs 指令—— 绑定策略(@.=.&) 引入主题背景:angular 的指令配置中的template可以直接使用硬编码写相应的代码,不过也可以根据变量,进行动态更新.那么需要用到那些变量,因用法的不同,所以需要设置合适的绑定策略. 一.@ 绑定策略 @ 绑定策略,它的作用就是能把指令配置的独立Scope下变量的值等于根据@绑定的指令属性的值.(指令属性的值可以使用表达式,但是得出来的值一定是字符串.) 1.上代码: html代码 <!DOCTYPE html> <h

angularjs中的绑定策略“@”,“=”,“&amp;”实例

<!DOCTYPE html> <html lang="zh-CN" ng-app="app"> <head> <meta charset="utf-8"> <title>绑定策略</title> <link rel="stylesheet" href="../bootstrap.min.css"> </head>

angularjs自定义指令绑定策略---‘&’绑定

接着上一篇 理解了"="和"@"绑定之后再来理解"&"绑定,就很简单了,同理,用"桥梁"进行分析,但还是有一些例外的情况,要不然angularjs也不会单独设定一个绑定策略,看案例先: <!DOCTYPE html><html lang="en" ng-app="MyModule"><head>    <meta charset=&quo