Javascript AngularJS-处理包含的内容
我有一个关于ngInclude和处理本指令所包含内容的问题 我的情况如下: 我有Javascript AngularJS-处理包含的内容,javascript,jquery,angularjs,angularjs-ng-include,Javascript,Jquery,Angularjs,Angularjs Ng Include,我有一个关于ngInclude和处理本指令所包含内容的问题 我的情况如下: 我有 <div ng-include="route" ng-controller="SomeCtrl"></div> 但这样做的结果是,除了包含的链接之外,每个链接都会抛出一个警报 你知道我怎样才能意识到只有才会发出警报吗?由于路由及其内容是动态创建的,因此没有机会在其中添加控制器。尝试查看是否有帮助。看起来您可以通过在“a”标记本身上添加一个指令来增强该行为。我假设您正在应用程序中使用jQue
<div ng-include="route" ng-controller="SomeCtrl"></div>
但这样做的结果是,除了包含的链接之外,每个链接都会抛出一个警报
你知道我怎样才能意识到只有
才会发出警报吗?由于路由及其内容是动态创建的,因此没有机会在其中添加控制器。尝试查看是否有帮助。看起来您可以通过在“a”标记本身上添加一个指令来增强该行为。我假设您正在应用程序中使用jQuery
您可以使用如下选择器在具有ng include
的元素上绑定单击事件:
.controller('SomeCtrl', function ($element) {
$element.on('click', 'a', function (e) {
e.preventDefault()
alert(this.href);
});
});
<div ng-include="route" ng-controller="SomeCtrl" prevent-clicking></div>
这应该适用于
元素中的任何
标记,无论在初始化控制器时它是否已经存在于DOM中
或者,如果您觉得在控制器中执行此操作不正确,则可以编写自定义指令:
.directive('preventClicking', function () {
return {
restrict: 'A',
link: function (scope, element) {
element.on('click', 'a', function (e) {
e.preventDefault()
alert(this.href);
});
}
};
});
然后像这样使用它:
.controller('SomeCtrl', function ($element) {
$element.on('click', 'a', function (e) {
e.preventDefault()
alert(this.href);
});
});
<div ng-include="route" ng-controller="SomeCtrl" prevent-clicking></div>
希望这能有所帮助。不要在控制器内进行DOM操作或绑定,这不是它们的用途。您可以为此使用指令,因为它们将在link方法中公开并返回元素。但这意味着我必须为我应用程序中的每种类型的按钮或链接创建一个新的指令?不,如果你只是想绑定
点击,然后将Angular作为已经点击的指令。如果你想对all页面进行一些DOM操作,你可以在body标签上有一个单独的自定义指令,然后在其中完成你的工作。