ng-click未触发

时间:2017-03-29 17:24:25

标签: javascript angularjs

添加以下超链接'像html一样:

<a style="color:white" ng-click="ClickMe()"><i class="fa fa-trash-o" style="color:white"></i>Click</a>

然后使用此代码触发click事件,如

 $scope.ClickMe = function () { alert("clicked"); }

工作得很好,但是当超链接“#39”时这不起作用。像

一样动态生成
 $('<a style="color:white" ng-click="ClickMe()"><i class="fa fa-trash-o" style="color:white"></i>Click</a>').insertAfter("#dashboard_link");

有人能解释为什么会这样吗?

4 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分: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);

不要忘记将$ compile注入您的控制器。

然而正如评论中指出的那样,除了使用jquery操作dom之外,还有更好的选择。

答案 2 :(得分:0)

问题是当你使用JQuery时,你还没有在DOM中编译它。

您必须使用 $compile 编译 HTML字符串 DOM 进入模板并生成模板函数,然后可以将链接范围和模板一起用于

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

请参阅to the AngularJs Docs了解更多详情。

答案 3 :(得分:-1)

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