angular指令之scope

我们来创建一个自定义指令




    
    Document
    


    
QQ图片20160916140302.png

使用自定义指令像上面一样的确不错,但是如果你想要对每一个指令渲染出来的按钮定制化,则好像不可以,比如下面我们创建一堆这个自定义指令,他们长得一模一样:




    
    Document
    


    
QQ图片20160916140205.png

一种思路是把这几个自定义的指令按钮放到不同的控制器里面,然后控制器里通过$scope上下文传递不同的值:




    
    Document
    


    
QQ图片20160916140044.png

这样写太麻烦了,所以我们的angular为我们的自定义指令提供了一个配置项叫scope,所以,我们可以如下这样写:




    
    Document
    


    

要看懂上面的只要注意两点:

  • 这里的独立作用域里面的a代表的是template里面的模型a
  • =b代表的是要angular去寻找视图里面的当前指令的属性b
  • 属性b的值需要去外部作用域里面去寻找

如果你想在指令作用域里绑定的模型的名字和外部使用的时候的属性名一样,可以省写成如下:




    
    Document
    


    

当然,上面的=号是双向数据绑定:




    
    Document
    


    

如果只是想单向的数据通信,可以用@符号:




    
    Document
    


    

如果想用ng-class,也是可以的:




    
    Document
    


    

最后,还有一个scope可以设置是引用外部作用域的方法




    
    Document
    


    

你可能感兴趣的:(angular指令之scope)