Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/22.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
Javascript ng click没有开火_Javascript_Angularjs - Fatal编程技术网

Javascript ng click没有开火

Javascript ng click没有开火,javascript,angularjs,Javascript,Angularjs,将以下“超链接”添加到html,如: <a style="color:white" ng-click="ClickMe()"><i class="fa fa-trash-o" style="color:white"></i>Click</a> 工作正常,但当“超链接”像这样动态生成时,这不起作用 $('<a style="color:white" ng-click="ClickMe()"><i class="fa fa-tra

将以下“超链接”添加到html,如:

<a style="color:white" ng-click="ClickMe()"><i class="fa fa-trash-o" style="color:white"></i>Click</a>
工作正常,但当“超链接”像这样动态生成时,这不起作用

 $('<a style="color:white" ng-click="ClickMe()"><i class="fa fa-trash-o" style="color:white"></i>Click</a>').insertAfter("#dashboard_link");
$('Click')。插入后面(“仪表板链接”);

有人能解释为什么会发生这种情况吗?

在超链接中使用javascript:void(0)

处理加载的绑定。由于元素是动态生成的,因此您还必须动态绑定它。

如果您在控制器中:您将要使用$compile服务

var el =  $('<a style="color:white" ng-click="ClickMe()"><i class="fa fa-trash-o" style="color:white"></i>Click</a>').insertAfter("#dashboard_link");

$compile(el)($scope);
var el=$('Click').insertAfter('dashboard_link');
$compile(el)($scope);
不要忘记将$compile注入控制器


但是,正如评论中指出的,有比使用jquery操作dom更好的替代方法。

问题是,当您使用jquery时,您没有在dom中编译它

您必须使用
$compile
HTML字符串DOM编译成模板并生成模板函数,然后可以使用该函数将作用域和模板链接在一起

表示编译$compile编译新的DOM,并将其链接到当前范围


请参阅以了解更多详细信息。

您能澄清这个答案吗?似乎提出了更多的问题;-)那是行不通的;angular永远不会触发
ng单击
,因为它不知道它存在。您不应该使用jQuery修改带有angular组件的DOM。jQuery不更新angular,因此angular不知道有新的绑定要监视。您需要在呈现之前编译代码。。。在添加html的地方添加脚本。不建议使用jQuery,使用指令和jQlite,假设这是在控制器中完成的;基于他们正在使用jQuery修改DOM的事实,这很可能发生在angular无法控制的地方。不,事实并非如此。他们可能试图修改angular控制下的元素,但没有迹象表明该代码是否在控制器中。除了这个事实,如果这是在一个控制器中,还有更好的方法来操作DOM,而不是跳转到jQuery。
var el =  $('<a style="color:white" ng-click="ClickMe()"><i class="fa fa-trash-o" style="color:white"></i>Click</a>').insertAfter("#dashboard_link");

$compile(el)($scope);