angularjs指令

2016-11-02  本文已影响0人  听风就是雨之路人甲

1.指令属性列表
.directive('directivename', function(){ return { restrict: String, replace: Boolean, transclude: Boolean, template: String or Template Func, templateUrl: String, priority: Number, terminal: Boolean, scope: Boolean or Obj, controller: String or Func, controllerAs: String, link: Func, compile: Func } })


2.属性使用

二、 true:继承父域时,可取到控制器内的元素,也会被影响,但不影响控制器
directive('dt1', function(){ return { restrict: 'E', scope: true, template: function(){ return 'true:' + document.getElementById('s1').innerHTML; } } });
true输入框变动不影响controller,可以得到controller内定义的值。true未改变前随着controller变动,改变后不被controller影响。

dt2.png

三、 obj:独立作用域
.controller('ctrl', function($scope){ $scope.name = 'baojian', $scope.show = function(cont) { console.log( cont ); }; });
directive('dt1', function(){ return { restrict: 'AE', scope: {}, template: function(){ return 'obj:' + document.getElementById('s1').innerHTML; } } });
1、 {},obj为{}时与controller之间无影响

dt3.png

2、 @,obj单向被controller影响,与true不同。也可以获取自定义属性的值。告诉myName取属性attrname中的值到新作用域,捋一捋这条线
directive scope = myName --> @attrname --> attrname --> {{name}} = controller scope
scope: { myName: '@attrname' }
注意是单向取值 {{ name }}
<dt attrname="{{name}}"></dt>
下面的情况@后面的字符可以省略
scope: { myName: '@myName' }
3、 =,obj与controller相互影响
directive scope = myName <--> @attrname <--> attrname <--> {{name}} = controller scope
scope: { myName: '=attrname' }
注意双向数据绑定直接用 name
<dt attrname="name"></dt>
下面的情况=后面的字符可以省略
scope: { myName: '=' }
4、 &,函数绑定
template: '<button ng-click="shw()">show</button>', scope: { shw: '&show' }
<div dt show="show(name)"></div>

上一篇 下一篇

猜你喜欢

热点阅读