簡體   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