javascript - 使用 Angular Directive 控制多个 DOMS?

标签 javascript angularjs angularjs-directive

我对 Angular 相当陌生,我想在 AngularJS 中创建一个如下所示的指令:

enter image description here

我的方法是制作一个类似以下内容的模板:

进度条.html

<div class="container">
   <div class="progress-line"></div>
</div>
<div class="current"> 11min </div>
<div class="max"> 24min </div>

然后使用 css 制作图形,并在指令的链接/编译功能中使用一些 javascript 将标记(“11min”和“24min”)移动到正确的位置,因为我不知道标记的宽度预先进度条。

这是一个不好的方法吗?我还没有发现其他人在一个指令中处理多个 DOM。

为了测试,我尝试在单击时将容器设为红色:

app.directive('progressBar', function($timeout) {    
    var linkFn = function(scope, element, attrs) {
        element.on("click", function () {
          element.childNodes[0].css("background-color", "red");
        });
    };

    return {
        restrict: 'EA',
        scope:{},
        templateUrl: 'templates/directives/progress-bar.html',
        link: linkFn
    };
});

但这不起作用:

Uncaught TypeError: Cannot read property '0' of undefined

最佳答案

首先,不要这样编辑 dom

element.childNodes[0].css("背景颜色", "红色");

使用ngStyle,这就是 Angular 方式 https://docs.angularjs.org/api/ng/directive/ngStyle

像这样:

<div class="container" ng-style="myStyle" ng-click="clickHandler()">
   <div class="progress-line"></div>
</div>
<div class="current"> 11min </div>
<div class="max"> 24min </div>


app.directive('progressBar', function($timeout) {    
    var linkFn = function(scope, element, attrs) {
        scope.myStyle = {};
        scope.clickHandler = function() { scope.myStyle.background-color = 'red' }
    };

    return {
        restrict: 'EA',
        scope:{},
        templateUrl: 'templates/directives/progress-bar.html',
        link: linkFn
    };
});

关于javascript - 使用 Angular Directive 控制多个 DOMS?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39732500/

相关文章:

javascript - TabPanel 中元素的对齐方式

javascript - jQuery 是否有一种方法可以检查数组的所有值以查看它们是否满足某些条件?

javascript - 如何等待浏览器关闭直到服务器调用完成?

angularjs - 如何多次使用 $compile 服务?

javascript - 将参数传递给 Ajax 中的函数

javascript - jQuery $ ('#id' ).submit() 不起作用

javascript - 如何删除 Controller 先前实例的功能?

angularjs - 加载 ng-includes 时是否有 $routechangesuccess 或 $viewcontentloaded 事件?

javascript - 根据 AngularJS 中的父指令,子指令中的“require”

javascript - Angular Accordion - 多个打开的组