Javascript ng click没有开火
将以下“超链接”添加到html,如: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
<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);