Javascript angularjs指令控制器$element

Javascript angularjs指令控制器$element,javascript,angularjs,angularjs-directive,angularjs-controller,Javascript,Angularjs,Angularjs Directive,Angularjs Controller,我看到angularjs强烈建议不要在控制器中进行任何dom操作, 仅设置作用域的状态,例如从ajax中提取数据等 那么具有隔离作用域的控制器呢 在隔离作用域上设置函数进行dom操作有意义吗 范例 controller:function($scope,$element){ $scope.editDom = function(){ $element.someThing(); } } 我将尝试将函数放入指令的“private”变量中: angular.module

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

那么具有隔离作用域的控制器呢 在隔离作用域上设置函数进行dom操作有意义吗

范例

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

我将尝试将函数放入指令的“private”变量中:

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

    return {
      scope: {},
      controller: function ($scope) {
        myDOMManipulations(…);
      }
    };
  });
这完全取决于函数需要做什么以及何时调用它


大多数情况下,我甚至将
控制器
链接
函数放在一个私有变量中,这样
返回{…}
就变得最小了。对于函数来说,它们的定义位置通常并不重要。此外,如果函数应该作为API导出。

通常我尝试将指令逻辑拆分为纯逻辑(进入控制器)和dom操作逻辑(进入链接函数)

如果我需要在作用域上放置执行dom操作的方法,我会在指令链接函数中声明这些函数

这是一些人工分离的逻辑,主要驱动程序是编写单元测试,这样我就可以轻松编写检查控制器的测试


在我的整个逻辑都是dom操作的情况下,我不需要将api暴露给其他指令(通过require),我根本没有控制器,只有链接

指令是为dom操作而生成的。@phylax我知道指令是为什么而生成的,问题是在隔离作用域中添加方法来进行dom操作是否是一种很好的做法?是否要从指令控制器中导出dom操作函数以从控制器中调用?请将其置于控制器之外。即使该控制器在指令内,它仍然是一个控制器。也就是说,您可以链接到指令。@phylax我想包装一些dom操作逻辑以便以后能够调用,保存此方法的位置在哪里?