角度指令编译/链接未被调用
angular directive compile/link not getting called
我正在尝试捕获所有锚点点击并使用 href 的。所以我写了下面的指令
app.directive('a', function() {
return {
restrict: 'E',
link: function(scope, elem, attrs) {
if(attrs.ngClick || attrs.href === '' || attrs.href === '#'){
elem.on('click', function(e){
alert(attrs.href);
e.preventDefault();
});
}
}
};
})
我尝试在我的应用程序.js以及 MyCtrl.js 文件中提供这个。我的模块声明在 myCtrl 中是这样的.js:
var AppControllers = angular.module('starter.controllers');
AppControllers
它在另一个离子项目中工作。不知道我哪里出错了。有人可以帮助我吗?
阅读评论后更新了答案
您可以覆盖 a
指令。但是,您必须确保覆盖默认行为,以防止 angularjs 覆盖的锚点选项卡单击处理程序触发。
app.directive('a', function() {
return {
restrict: 'E',
scope: true,
compile: function(element, attr) {
element.bind('click', function(event) {
alert('clicked on link: ' + attr.href)
event.preventDefault(); // IMPORTANT
});
}
}
});
此外,在尝试绑定到 html 时,您可能希望确保编译它以确保锚标记指令启动。有一个指令可以为您完成:
app.directive('bindHtmlCompile', ['$compile', function($compile) {
return {
restrict: 'A',
link: function(scope, element, attrs) {
scope.$watch(function() {
return scope.$eval(attrs.bindHtmlCompile);
}, function(value) {
element.html(value);
$compile(element.contents())(scope);
});
}
};
}]);
来源: https://stackoverflow.com/a/29994559/841804
因此,您可以像这样使用bind-html-compile
而不是ng-bind-html
:
<span bind-html-compile="getHtml()"></span>
最后,这里有一个 plunker 可以做到这一点:http://plnkr.co/edit/efJw8f40gYIaXo5Bdv44?p=preview
相关文章:
- 如何调用“;链接_;在onclick事件上使用Javascript
- 使用jquery延迟对象链接多个ajax调用
- 当用户点击动态创建的链接时,如何调用JS方法.JQuery,ASP.NET MVC
- 角度指令's链接函数未被调用
- 打印链接时,将javascript函数调用到链接中
- 如何在点击超链接时调用fullcalendar回调
- 从控制器Angularjs调用链接函数
- 正在创建网页,并希望将外部链接调用为html和css
- 如何进行AJAX调用,使其仅在我单击包含在特定类中的链接时触发;id”;父元素的
- 使用jQuery在链接上调用内联JavaScript
- 如何从 MVC4 链接调用 Javascript 方法(错误 JavaScript 运行时错误:对象不支持此操作)
- 如何在单击超链接时调用同一函数中定义的函数
- Backbone.js的新手,如何从html按钮和链接调用函数
- 添加 JavaScript 变量以单击以调用链接
- 元素在调用链接函数时不在 DOM 中
- 如何在第一个 php 脚本中访问变量 'a' 的值到第二个 php 脚本,并通过 ajax 调用链接
- Javascript异步调用链接
- 使用JavaScript为iframe调用链接
- 调用链接函数指令Angular 1 ES6
- 如何用方法调用链接make对象