我有一个指令,该指令由一个表单文本元素和一个继续按钮以及关联的控制器等组成。该指令将在大约5个不同的页面中使用,但是在每一个页面上使用的继续按钮都会有所不同。
我的问题是,如果对每个页面执行不同的操作,我可以/应该将继续按钮的代码放在哪里?
由于它是一个指令,所以我不能简单地将不同的函数传递给ng-click,具体取决于我在哪个页面上使用(即,如果我只是在使用的每个页面上复制代码,我都可以简单地更改ng-click上调用的函数,每个页面控制器中的功能。
希望我对我的问题不太含糊,您可以理解我在问什么。如果不是这样,请尝试更详细地解释。
我真的很感谢在此问题上的一些指导。
谢谢。
您可以通过两种方式来做到这一点。如果将指令创建为真正的组件,则可以将隔离范围与&
绑定到表达式的绑定一起使用。假设您的指令看起来像
<div do-work on-click="save()"></div>
和生成的html
<div>
<input ...>
<button ng-click="doAction()"><button>
</div>
指令范围将被定义
scope:{
onClick:'&'
}
在指令控制器或链接函数中,您需要实现button doAction
,该按钮进而评估onClick动作
scope.doAction=function() {
scope.onClick({//if params are required});
}
现在,您已经通过直接的onClick参考链接了父对象。这里要记住的一件事是,这会创建具有隔离范围的指令。
如果您不想创建隔离范围,则需要使用
scope.$eval(attr.onClick); // this evaluates the expression on the current scope.
希望这可以帮助。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句