3

当用户执行某个操作时,我会在 contenteditable 字段的文本中插入一个链接:

var newElement = document.createElement('span');
newElement.innerHTML = "<a id='123' class='cite' href='' data-ng-click='review(123);'>[&#8225;]</span>";
range.insertNode(newElement);
$compile($(newElement).contents())($scope);

当用户点击新字段时,我想执行激活控制器的审阅方法。($scope.review = 函数(id) {...};)

相反,页面导航到“#”,而不调用 review();

我假设 click 方法不会通过调用 range.insertNode(newElement); 来“绑定”到 $scope.review(); ? 我尝试使用 $apply 进行包装,但这没有用。

4

3 回答 3

3

使用href=""而不是href="#"与 Angular 一起使用。如果 href 为空,则始终阻止默认操作。http://docs.angularjs.org/api/ng.directive:a

还要确保$compile该元素。理想情况下,如果您所做的基本上是制作元素列表,那么这将是ng-repeat的情况。

于 2013-08-21T18:07:48.000 回答
0

您根本不需要在元素中使用 href 标记,ng-click 就可以工作。如果您希望指针在悬停时更改,可以使用内联样式或 css。

于 2013-08-21T20:35:43.363 回答
0

在您的模板代码中,您可以完全删除 href 属性。如果您希望它导航,请将其包含在 ng-click 表达式中。

于 2013-08-21T19:06:04.127 回答