在指令中,我们可以定义隔离范围,以便可以重复使用
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>
答案 0 :(得分:1)
不要在html中定义函数。范围是DOM的抽象;它代表了它的一部分,因此在范围中添加函数是将它们放入DOM的角度方式。
也就是说,您可以在现有指令中添加行为。
<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;