javascript - 使用 jquery find 在 Angular Directive(指令)中获取 dom 元素

标签 javascript jquery angularjs x-editable

如果我检查但无法使用 jquery.find() 获取它,元素 anchor 标记存在于 dom 中,它在控制台中返回长度 0,因此我无法在其上初始化 angular xeditable元素。

angular.module('built.objects')
.controller('listCtrl', listCtrl)
.directive('objectConfigListItem', function(Relay, Modal) {
    return {
      template: oCTmpl,
      restrict: 'A',
      replace:true,
      scope: {
        column: "=",
        gridItem: "="
      },
      link: function(scope, elem, attrs) {      
        var eItem = $(elem).find('.js-editable-item');
        <!-- console.log(eItem.length) -->
        $timeout(function() {
          initEditables();
        },0)
   
        function initEditables() {
          for (var i = 0; i < eItem.length; i++) {
            initialize(eItem.eq(i))
          };
        }
       
        function initialize(dom) {
          var self   = this;
          var type   = dom.attr("data-type");
          var name   = dom.attr("data-name");
          var source = dom.attr("data-select-source");
          var options = {
            validate: function(value) {
              updateObjectConfig(value,scope.column.key);
              return false;
            },
          };
          console.log("in initialize",type,name,source)
          dom.editable(options);
        }
    }
  });
<!-- oCTmpl template -->
<td>
<div class="editable-object-directive">
  <div ng-if="column.data_type==='text' || column.data_type==='number'">
    <a class="editable-item js-editable-item" href="#" data-type="{{column.data_type}}" data-value="{{colValue}}" data-name="{{colValue}}" data-title="{{column.label}}"></a>
  </div>
  <div ng-if="column.data_type==='boolean'">
    <a class="editable-item js-editable-item" href="#" data-type="select" data-select-source="boolean" data-source="{{booleanArray}}" data-name="{{colValue}}" data-title="{{column.label}}"></a>
  </div>
</div>
</td>

我如何在指令中访问类为 .js-editable-item 的元素以在其上初始化 angular xeditable?

提前致谢:)

最佳答案

认为您正在使用嵌入式 jQlite。 jQlite(angular 的“jQuery”端口)不支持按类查找。您可以在您的应用程序中包含 JQuery,或者您可以使用 QuerySelectorQuerySelectorAll 来获取您的子元素。

link: function(scope, element, attrs) {
   console.log(element[0].querySelector('.js-editable-item'))
}

关于javascript - 使用 jquery find 在 Angular Directive(指令)中获取 dom 元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36469233/

相关文章:

javascript - "TypeError: fsevents is not a constructor"- 已经尝试了很多解决方案

javascript - 如何防止页面在发布表单后重新加载?

javascript - 注销后使用 React with Meteor : how to handle Meteor. user()

jquery - JQuery 模板的替代方案

jquery - 检测 contenteditable div 何时具有多行文本

jquery - 加快 iPhone 上 jQuery Mobile 的对话框/页面转换速度?

javascript - 日期格式不符合要求; Angular js

angularjs - Angular bootstrap ui 模态范围与父级绑定(bind)

javascript - 延迟表单提交(AngularJS)

javascript - Node : remove json element in json object