javascript - 我的指令没有触发

标签 javascript angularjs

我想用我的指令(更改优先级)重新创建 nsClick 行为。 所以这是我的代码:

angular.module('MyApp').directive('nsClickHack', function () {
return {
    restrict: 'E',
    priority: 100,
    replace: true,
    scope: {
        key: '=',
        value: '=',
        accept: "&"
    },
    link: function ($scope, $element, $attrs, $location) {
        $scope.method();
    }
}
});

以及我要绑定(bind)的行:

<li ng-repeat="item in items" ns-click-hack="toggle(); item.action()">

toggleitem.action 来自其他指令。

你能指出我哪里出错了吗?

最佳答案

如果您尝试重新创建 ng-click,那么最好查看 source of the ngClick directive .

例如,它不会创建隔离范围,因为只能在一个元素上创建一个隔离范围,并且它会尝试适应其他指令。另一种方法是 $parse 属性值,这是内置实现所做的。

如果您只是创建一个“穷人”版本的 ngClick,那么,当然,您可以使用在作用域上定义的回调函数 "&",并且单击元素时调用它:

.directive("nsClickHack", function(){
  return {
    restrict: "A",
    scope: {
      clickCb: "&nsClickHack"
    },
    link: function(scope, element){
      element.on("click", function(e){
        scope.clickCb({$event: e}); // ngClick also passes the $event var
      });
    }
  }
});

用法如你所愿:

<li ng-repeat="item in items" ns-click-hack="toggle(); item.action()">

plunker

关于javascript - 我的指令没有触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28448390/

相关文章:

javascript - 如何通过javascript知道用户重新加载页面

javascript - Google map API - 如何更改 map 高度?

javascript - 在 Typescript 对象中添加新属性

javascript -//@流: Uncaught ReferenceError: number is not defined

c# - 将值从 Angular Controller 传递到 C# API

javascript - 在 AngularJS 中需要 ngModel 语法

c# - 如何使用 AngularJS 构建我的 MVC Web API 应用程序而不产生命名冲突

如果 JavaScript 替换方法破坏了嵌套,它不会删除结束标记,如正则表达式中编码的那样

javascript - 从另一个目录下载文件 AngularJS

html - Angularjs 嵌入会破坏 CSS 子关系吗? (>)