Init指令实例的匿名函数

时间:2014-11-26 02:24:18

标签: angularjs

在指令中,我们可以定义隔离范围,以便可以重复使用

var app = angular.module('myModule',[])
.directive('btn',[function(){
    return {
        ...,
        scope:{}
    }
}]);

在使用中,它可以创建单独的实例。

<scope>
    <btn></btn>
    <btn></btn>
</scope>

但是,如果<btn>发生了类似&#39;点击&#39;之类的事件,那么&#39; hover&#39;这些事件应该在第一个开始时在范围或控制器中定义。如果我有很多<btn>并且它们被放置在不同的文件中,我必须在一个文件中定义与<btn>的数量一样多的处理程序。这意味着页面必须加载许多不必要的功能。

是否有任何方法可以让我初始化指令的实例,以便它可以在呈现该方向之前接受匿名函数成为其处理程序。像:

<scope>
    <btn>this_btn.click=function(){alert(1)}</btn>
    <btn>this_btn.hover=function(){alert(0)}</btn>
<scope> 

1 个答案:

答案 0 :(得分:1)

不要在html中定义函数。范围是DOM的抽象;它代表了它的一部分,因此在范围中添加函数是将它们放入DOM的角度方式。

也就是说,您可以在现有指令中添加行为。

&#13;
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<div ng-app>
  <input type="text" ng-model="text">
  {{text}}
  <btn ng-click="text = 1">on click</button>
  <btn ng-mouseenter="text = 2"> on hover</button>
</div>
&#13;
&#13;
&#13;