Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/api/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angularjs 角度:添加ng单击内部指令_Angularjs - Fatal编程技术网

Angularjs 角度:添加ng单击内部指令

Angularjs 角度:添加ng单击内部指令,angularjs,Angularjs,在我的指令中,我使用appendTo和ng在指令中单击: $("<div>" + "<a href='' ng-click='addIt()' + user + "</a></div>").appendTo '.user-class' $(“+”是的,您需要$compile,在指令中注入$compile,您可以这样做: var link = $compile("<div>" + "<a href='' ng-click='addIt

在我的指令中,我使用
appendTo
ng在指令中单击

$("<div>" + "<a href='' ng-click='addIt()' + user + "</a></div>").appendTo '.user-class'

$(“+”是的,您需要$compile,在指令中注入$compile,您可以这样做:

 var link = $compile("<div>" + "<a href='' ng-click='addIt()'" + user + "</a></div>")(scope);
 link.appendto('.user-class');
var-link=$compile(“+”)
这段代码是从json生成下拉菜单的指令的一部分。没有将其移动到指令模板的选项,因此需要找到如何使“ng click”在此处工作的解决方案

像Matthew一样,我最好奇的是哪些部分不能移出到外部模板/内部模板函数中。对我来说,只需重新编译指令来添加
ng click
处理程序没有多大意义

有意义的方法是将
ng click
指令添加到模板中。可以是外部指令,也可以是在指令定义对象中返回字符串值的函数

链接
步骤完成后运行
$compile
在性能方面不是一个好主意,因为它会重新编译您的指令所附加到的整个DOM元素。尽可能避免这样做

指令('myDir',函数(){ 返回{ 模板:函数(/*元素,attrs*/){ 返回“”; }, 链接:功能(范围、el、属性){ scope.user='John'; } }; });

这将导致以下DOM结构:

<div>
  <a href="" ng-click="addIt(user)">John</a>
</div>


是的,您需要编译它,角度指令将绑定到作用域属性:)对我来说,这段代码看起来很像是有一个更清晰的角度解决方案。你想实现什么?@LionC这段代码是json下拉菜单中指令的一部分。没有选项可以将其移动到指令模板,所以需要找到解决方案如何使“ng click”在这里工作。你应该能够将其移动到模板,th我在这里看到的没有任何东西会提出相反的建议。哪些部分不能移动?正如@MathewBerg所说,我不明白为什么不能将其移动到模板。将数据绑定到指令控制器,并在模板中使用ng repeat和ng click。我会避免使用链接功能(因此会干扰范围)只需使用DDO的scope属性,甚至更好的是,bindToController属性与ControllerA一起使用。这使代码更符合当前的标准,并符合2.0协议的未来证明。这里的链接只是为了以最简单的形式展示结果。正如您所说,从外部来源将是一条出路。
<div>
  <a href="" ng-click="addIt(user)">John</a>
</div>