0

내가, 만, 범위의 상태를 설정 AngularJS와 매우 컨트롤러의 모든 DOM 조작을 할 수없는 제안을 참조 지시어 컨트롤러 $ 요소 등 아약스에서 데이터를 끌어 예를 들어,AngularJS와

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

대해 고립 된 범위 와 지침 컨트롤러는 DOM 조작을

예를 수행 할 격리 된 범위에서 기능을 설정하는 것은 의미가 않습니다

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

dom 조작을위한 지시문이 만들어졌습니다. – phylax

+0

@phylax 지시문이 무엇인지 알고 있습니다. dom 조작을 수행 할 격리 된 범위에 메서드를 추가하는 것이 좋습니다. – joelkaufman

+0

지시문 컨트롤러의 dom 조작 함수를 내 보내어 컨트롤러에서 호출하도록 하시겠습니까? – phylax

답변

0

나는 directive의 '개인'변수에 기능을 넣어 함께 답을하려고합니다 :

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

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

그것은 모든 기능은 할 필요가 무엇을가 호출되어야 할 때에 따라 달라집니다.

주로 controller 또는 link 함수를 개인 변수에 넣으므로 return { … }이 최소화됩니다. 함수의 경우 정의 된 위치는 대개 중요하지 않습니다. 게다가 함수 shouzld가 API로 익스포트되는 경우.

1

보통 컨트롤러로 들어가는 순수 로직과 링크 기능으로 들어가는 DOM 조작 로직으로 지시 로직을 분할하려고합니다.

범위에서 dom 조작을 수행하는 메소드를 넣어야하는 경우 지시 링크 함수에서 해당 함수를 선언합니다.

이것은 메인 드라이버가 단위 테스트를 작성하는 로직의 인위적인 분리입니다. 그런 다음 컨트롤러를 검사하는 테스트를 쉽게 작성할 수 있습니다.

내 전체 논리가 dom 조작이고 api를 다른 지시문 (require를 통해)에 노출 할 필요가없는 경우 컨트롤러가 전혀없고 링크 만 있습니다.