繁体   English   中英

angularjs指令控制器$ element

[英]angularjs directive controller $element

我看到angularjs强烈建议不要在控制器中进行任何dom操作,而只是设置范围的状态,例如从ajax提取数据等,

https://docs.angularjs.org/guide/controller

具有隔离范围的指令控制器又如何在隔离范围上设置函数进行dom操作有意义?

controller:function($scope,$element){
    $scope.editDom = function(){
        $element.someThing();
    }
}

通常,我会尝试将指令逻辑拆分为纯逻辑(用于控制器)和dom操纵逻辑(用于链接函数)。

在需要将进行dom操作的方法放在作用域的情况下,可以在指令链接函数中声明这些函数。

这是一些人为的逻辑分离,主驱动程序为此编写了单元测试,因为我可以轻松地编写检查控制器的测试。

如果我的整个逻辑是dom操纵,并且我不需要将api暴露给其他指令(通过require),那么我根本就没有控制器,只有链接。

我将把函数放在directive的“私有”变量中尝试一个答案:

angular.module('...', [])
  .directive('...', function () {
    var
    myDOMManipulations = function (…) {…};

    return {
      scope: {},
      controller: function ($scope) {
        myDOMManipulations(…);
      }
    };
  });

这完全取决于函数需要执行的操作以及何时调用它。

通常,我甚至将controllerlink功能都放在一个私有变量中,因此return { … }变得最小。 对于函数,定义它们的位置通常无关紧要。 此外,如果函数应该作为API导出。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM