javascript - 没有 Jquery 的指令内的 AngularJs DOM 操作

标签 javascript jquery html css angularjs

让我们马上开始,假设这是我的指令:

appDirectives.directive('myDirective', function () {
    return{
        restrict: 'A',
        templateUrl: 'directives/template.html',
        link: function (scope, element, attr) {
              // maybe by element or attr access to the dom inside the template
        }
    };
});

这是我的模板:

 <div class='col-md-12 videoholder' id="sliderContainer">
    <canvas id="myCanvas"></canvas>
    <div class="myLangaugesholder"></div>
</div>

通常我会使用(但这在 Angular 中是不好的做法)

document.getElementById('myCanvas').style.opacity = 0.6; 

我的问题

如何不使用 Jquery 在指令中访问 ID(例如 myCanvas)。我用 element 参数尝试过,但后来我只能访问 <div data-myDirective></div> . 最佳实践、代码示例随时欢迎!

最佳答案

有很多原生 DOM 方法。在您的情况下,您可以使用 querySelector/querySelectorAll:

appDirectives.directive('myDirective', function () {
    return{
        restrict: 'A',
        templateUrl: 'directives/template.html',
        link: function (scope, element, attr) {
            var canvas = element[0].querySelector('canvas');
            canvas.style.opacity = 0.6;
        }
    };
});

还要确保您没有在指令模板中使用 id,因为指令应该是可重用的。这个指令模板要好得多:

<div class='col-md-12 videoholder' class="slider-container">
    <canvas class="my-canvas"></canvas>
    <div class="my-langauges-holder"></div>
</div>

关于javascript - 没有 Jquery 的指令内的 AngularJs DOM 操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31408569/

相关文章:

javascript - 如何使用javascript将字符串添加到for循环内的列表中?

javascript - AMP form select 如何获取data属性的值?

javascript - javascript中的彩色到灰度循环

javascript - JQuery 按钮 : Style change on js event or CSS only

javascript - 使用 Javascript 根据内容选择和隐藏元素?

Javascript变量名作为函数

javascript - mousemove 在具有相同类名的多个 div 上

html - HTML/CSS 中是否有外观和工作方式类似于 iOS 中的 UIPageControl 的页面控件?

html - 该值不会从下拉列表发送到 Express.js

javascript - 根据元素出现的频率对数组进行排序