다른 컨트롤러가있는 뷰 내에서 지시문 함수와 함께 ng-click 사용

압둘 하미드 |

이 HTML이 있습니다.

<button ng-click="reset()">
<div ng-controller="anotherController" class="container">
  <directive data="{{ datafordirective }}"></directive>
</div>

지령:

app.directive('directive', function(){
   return {
    restrict: 'AE',
    scope:{ data: '=', someAction: '=', reset: '='},
    link: function(scope, element, attrs){
     scope.reset = function(){
        //reset dataset
     };  
  }
};

});

내 지시문 내부에 데이터를 재설정하는 링크 함수의 함수가 있지만 문제는이 버튼 과이 지시문을 사용하는 뷰가 다른 컨트롤러를 가지고 있지만 지시문 과이 뷰 컨트롤러가 동일한 app.module ( ' appname ', []) ...

이것을 달성하는 방법이 있습니까? 지시문 범위 밖에서 scope.reset () 함수를 사용하려면?

감사!

blcook223

이를 수행 할 수있는 여러 가지 방법이 있습니다. 몇 가지 예를 들어 보겠습니다.

1. 쉽고 비 이상적인 방법

지시문 내에서 상위 범위에 액세스하십시오.

대신에:

scope.reset = function() {};

사용하다:

scope.$parent.reset = function() {};  

그러나 자식 범위 내에서 부모 범위를 수정하는 것은 좋은 방법이 아닙니다. 범위 상속이 작동하는 방식에 대해 혼동을 일으킬 수 있습니다 ( AngularJS에서 범위 프로토 타입 / 프로토 타입 상속의 뉘앙스는 무엇입니까? ). 또한 IMO는 훌륭한 캡슐화가 아닙니다.

2. (약간) 더 나은 방법

<button ng-click="buttonClicked = true">
<div ng-controller="anotherController" class="container">
  <directive data="{{ datafordirective }}" reset="buttonClicked" reset-callback="buttonClicked = false"></directive>
</div>

여기서는 부모 범위 ( buttonClicked)의 속성을 사용하여 요소의 속성을 통해 지시문을 제어합니다.

app.directive('directive', function(){
   return {
    restrict: 'AE',
    scope:{ data: '=', resetCallback: '&', reset: '='},
    link: function(scope, element, attrs){
     scope.$watch('reset', function(val) {
       if (val) {
         // reset dataset
         scope.resetCallback();
       }

     });
  }
};

지시문은의 값을 buttonClicked바인딩 한 reset다음 해당 값이 변경되는지 감시하고 변경되면 데이터 세트를 재설정합니다.

3. 또 다른 더 나은 방법

데이터 세트에서 작업을 처리 할 서비스를 만듭니다.

app.service('dataset', function() {
  this.reset = function() {
    // reset dataset
  };
});

그런 다음 부모 컨트롤러 어딘가에 dataset서비스 를 삽입하고 호출 할 함수를 만들어야합니다 dataset.reset.

$scope.reset = function() {
  dataset.reset();
};

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

상위 뷰 컨트롤러에있는 objc 노출 함수와 함께 뷰 컨트롤러에서 선택기 사용

분류에서Dev

지시문 / ng-transclude와 함께 컨트롤러를 구문으로 사용할 수 있습니까?

분류에서Dev

Angularjs의 사용자 지정 지시문에 대한 컨트롤러의 ng-init 함수 호출에서 템플릿을 가져와야합니다.

분류에서Dev

Angular : ng-if 또는 다른 Angular 지시문을 사용하여 HTML보기에서 컨트롤러 함수를 호출하는 방법

분류에서Dev

ng-click이 컨트롤러 내부에서 내 함수를 호출하지 않습니다.

분류에서Dev

"응용 프로그램이 대상에서 nil 뷰 컨트롤러를 푸시하려고했습니다"와 함께 UIViewController 푸시가 실패합니다.

분류에서Dev

AngularJS ng-switch와 함께 ng-click을 사용하려고하지만 ng-switch가 내 div를 전환하지 않습니다.

분류에서Dev

AngularJS 지시문 : 컨트롤러의 함수를 ng-click에 연결

분류에서Dev

ng-repeat 내에서 지시문과 함께 의사 선택기를 사용하는 데 문제가 있습니다.

분류에서Dev

동일한 컨트롤러에서 함수를 호출하여 플래시 메시지와 함께 뷰를 반환합니다.

분류에서Dev

다른 함수 내에서 매개 변수와 함께 함수의 반환 값을 사용하는 방법

분류에서Dev

Angular ng-click이 내 지시문에서 함수를 트리거하지 않습니다.

분류에서Dev

컨트롤러 변수와 함께 ng-switch 사용

분류에서Dev

내 앱에서 컨트롤러를 함께 선언하고 연결하는 데 문제가 있습니다.

분류에서Dev

안녕하세요, 스타일 가이드 정의가있는 컨트롤러에서 ng-click 이벤트를 사용하지 않습니다.

분류에서Dev

ng-click을 사용하여 두 가지 다른 함수 호출

분류에서Dev

컨트롤러와 함께 ng-options를 구문으로 사용하고 데이터 계층에서 열거 형을 사용하는 방법

분류에서Dev

ng-click 지시문이 컨트롤러 함수를 호출하지 않습니다.

분류에서Dev

컨트롤러 angularjs 내에서 사용자 지정 지시문 함수 호출

분류에서Dev

클래스가 다른 다른 뷰 컨트롤러에서 함수를 호출하는 방법

분류에서Dev

CodeIgniter-컨트롤러의 다른 함수에서 뷰로드

분류에서Dev

나뭇 가지 템플릿에서 변수를 설정 한 다음 다른 변수와 함께 사용

분류에서Dev

ANGULAR 1.6-이오니아 1 | ng-click에서 전달 된 매개 변수와 다른 컨트롤러의 함수 매개 변수

분류에서Dev

다른 사용자에게 워드 문서와 함께 내 리본 보내기

분류에서Dev

뷰에서 세션과 함께 if 문을 사용하는 방법

분류에서Dev

AngularJS : ng-click에 대한 다른 함수 호출과 함께 <li> </ li>에서 ng-repeat를 사용합니까?

분류에서Dev

Angular-지시문에서 컨트롤러 함수 사용

분류에서Dev

앱을 시작할 때 사용자를 다른 뷰 컨트롤러로 안내하는 가장 빠른 방법

분류에서Dev

컨트롤러 내에 정의 된 함수를 실행하기 위해 ng-controller 지시문과 함께 onload 속성을 사용하는 방법은 무엇입니까?

Related 관련 기사

  1. 1

    상위 뷰 컨트롤러에있는 objc 노출 함수와 함께 뷰 컨트롤러에서 선택기 사용

  2. 2

    지시문 / ng-transclude와 함께 컨트롤러를 구문으로 사용할 수 있습니까?

  3. 3

    Angularjs의 사용자 지정 지시문에 대한 컨트롤러의 ng-init 함수 호출에서 템플릿을 가져와야합니다.

  4. 4

    Angular : ng-if 또는 다른 Angular 지시문을 사용하여 HTML보기에서 컨트롤러 함수를 호출하는 방법

  5. 5

    ng-click이 컨트롤러 내부에서 내 함수를 호출하지 않습니다.

  6. 6

    "응용 프로그램이 대상에서 nil 뷰 컨트롤러를 푸시하려고했습니다"와 함께 UIViewController 푸시가 실패합니다.

  7. 7

    AngularJS ng-switch와 함께 ng-click을 사용하려고하지만 ng-switch가 내 div를 전환하지 않습니다.

  8. 8

    AngularJS 지시문 : 컨트롤러의 함수를 ng-click에 연결

  9. 9

    ng-repeat 내에서 지시문과 함께 의사 선택기를 사용하는 데 문제가 있습니다.

  10. 10

    동일한 컨트롤러에서 함수를 호출하여 플래시 메시지와 함께 뷰를 반환합니다.

  11. 11

    다른 함수 내에서 매개 변수와 함께 함수의 반환 값을 사용하는 방법

  12. 12

    Angular ng-click이 내 지시문에서 함수를 트리거하지 않습니다.

  13. 13

    컨트롤러 변수와 함께 ng-switch 사용

  14. 14

    내 앱에서 컨트롤러를 함께 선언하고 연결하는 데 문제가 있습니다.

  15. 15

    안녕하세요, 스타일 가이드 정의가있는 컨트롤러에서 ng-click 이벤트를 사용하지 않습니다.

  16. 16

    ng-click을 사용하여 두 가지 다른 함수 호출

  17. 17

    컨트롤러와 함께 ng-options를 구문으로 사용하고 데이터 계층에서 열거 형을 사용하는 방법

  18. 18

    ng-click 지시문이 컨트롤러 함수를 호출하지 않습니다.

  19. 19

    컨트롤러 angularjs 내에서 사용자 지정 지시문 함수 호출

  20. 20

    클래스가 다른 다른 뷰 컨트롤러에서 함수를 호출하는 방법

  21. 21

    CodeIgniter-컨트롤러의 다른 함수에서 뷰로드

  22. 22

    나뭇 가지 템플릿에서 변수를 설정 한 다음 다른 변수와 함께 사용

  23. 23

    ANGULAR 1.6-이오니아 1 | ng-click에서 전달 된 매개 변수와 다른 컨트롤러의 함수 매개 변수

  24. 24

    다른 사용자에게 워드 문서와 함께 내 리본 보내기

  25. 25

    뷰에서 세션과 함께 if 문을 사용하는 방법

  26. 26

    AngularJS : ng-click에 대한 다른 함수 호출과 함께 <li> </ li>에서 ng-repeat를 사용합니까?

  27. 27

    Angular-지시문에서 컨트롤러 함수 사용

  28. 28

    앱을 시작할 때 사용자를 다른 뷰 컨트롤러로 안내하는 가장 빠른 방법

  29. 29

    컨트롤러 내에 정의 된 함수를 실행하기 위해 ng-controller 지시문과 함께 onload 속성을 사용하는 방법은 무엇입니까?

뜨겁다태그

보관