angular的directive的属性和用法

 app.directive('datetimepicker',function(){
return {
  restrict : 'A',

scope :true,

 require:['?^add','?^minor'],

link: function (scope, element, attrs) {}

})

restrict

//E:表示该directive仅能以element方式使用,即:<my-dialog></my-dialog>
//A: 表示该directive仅能以attribute方式使用,即:<div my-dialog></div>

//C:样式,即:<div class="my-dialog:product"></div>

//M:注释,即<!--directive:my-dialog:product-->
 //可以简单理解为,当directive被angular 编译后,执行该方法
                  


scope

  //scope 当你写上该属性时,就表示这个directive不会从它的controller里继承$scope对象,而是会重新创建一个。

//scope的属性简洁但语法复杂,你可以用符号例如:&,@ 和=来定义属性的绑定方式。

使用 @ 绑定父级作用域]监测属性的结果。eg:scope:{note:'@'}

 &是在属性里解析表达式的,也构建了一个可重用的功能表达式构造器会生成了一个依赖父级scope的方法。

你可以随时执行他,甚至可以监测到输出的变化。

使用 = 设置 本地scope与父级scope间的双向数据绑定。
 template:'{{note()}}'

 link:function(scope,element,attrs){

var parentGet=$parse(attrs.a);//$parse 将一个AngularJS表达式转换成一个函数

}

<hello-waa colora='color'></hello-waa> 

app.directive('helloWaa',function(){
    return {
       scope:{colora:'='},//和属性值一致   绑定的是属性值
       restrict: 'AE',
       replace: true,
       template: '<div style="background-color:{{color}}">Hello World<div><input type="text" ng-model="color"></div></div>'      
    }
});

 link    

//element简单说就是$('my-dialog')
 //attrs是个map,内容是你这个directive上的所有属性

//someCtrl,最后一个就是通过require获取的controller的名字,内部控制器

link:function(scope,element,attrs){

attrs.$observe('a',function(){ //检测属性的变化

});

}


require

选项的值可以分别用前缀?、^ 和?^进行修饰,也可以不修饰。相当于注入控制器

      如果不进行修饰,比如require:'thisDirective',那么require只会在当前指令中查找控制器

      如果想要指向上游的指令,那么就是用^进行修饰,比如require:'^parentDirective',如果没有找到,那就         会抛出一个错误。

      如果使用?前缀,就意味着如果在当前指令没有找到控制器,就将null作为link的第四个参数;

      那么,如果将?和^结合起来,我们就可以既指定上游指令,又可以在找不到时,不抛出严重的错误

resultCtrl控制器列表,require注入的控制器

link:function(scope,element,attrs,resultCtrl){

angular.element(document.querySelector('#minor')).on('click',resultCtrl[1].reduceCount);

//resultCtrl[0]就是?^add,

//resultCtrl[1]就是?^minor,

}



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Angular中,没有直接的计算属性概念,但是可以通过使用`$computed`来实现类似的功能。使用`$computed`,您可以定义依赖于其他属性计算结果的属性。这些计算属性在输入改变后只会被重新计算,而不会在每次变更时都重新计算。 举个例子,假设我们有一个组件,其中有`firstName`和`lastName`两个属性,并且我们希望定义一个`fullName`属性,它是`firstName`和`lastName`的组合。我们可以使用`$computed`来实现这个功能,代码如下: ```javascript app.component('computedStyle', { template: ` <p>{{$ctrl.firstName}}</p> <p>{{$ctrl.lastName}}</p> <p>{{$ctrl.fullName}}</p> <button ng-click="$ctrl.changeName()">Change name</button> `, controller: class Test { constructor() {} $onInit() { this.firstName = 'Mike'; this.lastName = 'Jack'; } $computed('fullName', ['firstName', 'lastName'], () => { return this.firstName + ' ' + this.lastName; }); changeName() { this.firstName = 'Linda'; } } }); ``` 在上面的例子中,我们定义了一个`computedStyle`组件,其中有三个属性:`firstName`,`lastName`和`fullName`。在`$computed`函数中,我们指定了`fullName`属性依赖于`firstName`和`lastName`属性,并在回调函数中返回通过这两个属性计算得到的值。 这样,当`firstName`或`lastName`发生变化时,`fullName`属性会自动重新计算。 请注意,这只是通过使用`$computed`函数在Angular中模拟计算属性的一种方式。在Vue中有一个更直接的计算属性概念,使得定义和使用计算属性更加简单和方便。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值