javascript - AngularJS 指令事件监听器未触发

标签 javascript angularjs angularjs-directive

我有一个像这样的指令:

<div ng-repeat="(key, value) in $parent.item.detailedPlan track by $index">
  <ul contenteditable="true" class="plan-actions" data-placeholder="Add Plan ...">
    <li ng-repeat="planItem in value" ng-show="(key+1)==$parent.dayItem.value">
      {{planItem}}
    </li>
  </ul>
</div>

和一个像这样的指令函数:

.directive('planText', function(){
      return {
        restrict:'E',
        templateUrl: 'app/partials/planText.html',
        link: function(scope, element, attrs){

          element.find("ul").bind('keydown', function(event){
            console.log("keydown event");
          if (event.keyCode == 8) {
            // console.log("backspace pressed");
            if ($(this).children().length == 1 && $(this).children("li").text().split("").length == 0) {
                console.log("stop li removal");
                event.preventDefault();
            }
          }
        });
        element.find("ul").bind('focus', function(event){
            if ($(this).children().length ==0 ) {
                console.log("insert li");
                $(this).append("<li></li>");
            }
        });
        }
      }
})

它读取的数据结构是一个数组的数组。 但是,这两个事件监听器函数都不会触发。添加 $compile 也没有帮助。请帮忙!

最佳答案

检查这个codePen

问题是当你在指令中使用 ng-repeat 时,它会发生,因为创建元素时链接被触发,但 ng-repeats 之后开始工作,所以你可以通过添加 $timeout 来解决这个问题 绑定(bind)之前。

此问题与 AngularJS directive runs before element is fully loaded 重复

关于javascript - AngularJS 指令事件监听器未触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43963839/

相关文章:

asp.net - Facebook Connect 登录按钮未呈现

javascript - 如何在 angularJS Controller (IONIC) 中设置 ng-click

javascript - Angular 从 ng-repeat 外部选择所有复选框

javascript - Angular : dynamic form generation

javascript - Angularjs ng-class 在子指令中切换类

javascript - ng 嵌入为 : element vs attribute

javascript - Jquery Ajax .done() 行为

javascript - 单击两次会产生两个 onClick 事件

javascript - ionic ngElse equal

javascript - 从组件 AngularJS 调用 javascript 函数