타임 아웃 기능없이 디렉티브 내의 경쟁 조건을 어떻게 극복 할 수 있습니까?

별자리

나는 지시문을 만드는 데 손을 뻗고 있습니다. 일이 단순히 작동하지 않았기 때문에이 기본적인 경쟁 조건 문제가 문제를 일으키는 것을 발견 할 때까지 단순화했습니다. 내 지시문의 컨트롤러에서 다음과 같은 몇 가지 검사를 수행해야합니다.

if ($scope.test.someValue === true) { $scope.test.anotherValue += 1; }

다음은이 문제가 어떻게 나타나는지 설명하는 몇 가지 로그가있는 기본 지침입니다.

app.directive('myDirective', function () {
    return {
        restrict: 'E',
        replace: true,
        scope: {
            test: '='
        },
        template: '<div><pre>{{ test | json }}</pre></div>',
        controller: function ($scope, $timeout) {

        // this logs undefined
        console.log($scope.test);

        // this logs the scope bound 'test' object
        $timeout(function() {
            console.log($scope.test);
        }, 300);

        }
    };
});

이 경합 상태로 작업하는 올바른 방법은 무엇입니까? 현실 세계에서이 시간 제한 기능이 API 호출에 걸리는 시간에 따라 작동하거나 실패 할까 걱정됩니다.

사비 람

"연결"단계 (컨트롤러를 할당 할 때)에서 $scope.test변수가 아직 할당되지 않았으므로undefined

$timeout(fn, timeout)은 $ 범위에 뭔가 영향을 미칠 것입니다 무언가를 실행하는 방법입니다. $ timeout () 값을 0으로 설정해도 여전히 작동합니다. 그 이유는 $ timeout (...) 함수가 현재 $digest()주기가 끝날 때까지 연기되기 때문 입니다.

참조 : $ timeout () $ digest ()

또한 특정 값의 변경 사항을 확인하려면 다음을 수행 할 수 있습니다.

$scope.$watch("test.somevalue", function(new_val, old_val) {
    console.log("somevalue changed!! - increment othervalue");
    $scope.othervalue += 1;
});

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

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

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

타임 아웃 기능을 어떻게 구현할 수 있습니까?

분류에서Dev

swagger-ui의 레이아웃을 어떻게 변경할 수 있습니까?

분류에서Dev

mercurial의 작업 디렉토리에 변경 사항이있는 경우 어떻게 체크 아웃을 중단 할 수 있습니까?

분류에서Dev

이 자바에서 특정 시간 간격으로 업데이트되지 때 어떻게 null로 변수의 값을 타임 아웃 할 수 있습니까?

분류에서Dev

Eclipse 작업 공간 선택 대화 상자의 레이아웃을 어떻게 변경할 수 있습니까?

분류에서Dev

디지털 오션 방울의 "오류 : 순환"을 어떻게 극복 할 수 있습니까?

분류에서Dev

컨트롤러 전에 디렉티브 기능을 어떻게 실행할 수 있습니까?

분류에서Dev

MS Word 2013에서 내 테이블의 레이아웃 옵션을 어떻게 설정할 수 있습니까?

분류에서Dev

경쟁 조건이있는 프로세스의 동기화에 타임 스탬프를 사용할 수 있습니까?

분류에서Dev

Eclipse Mars에서 다중 창 퍼스펙티브 레이아웃을 어떻게 저장할 수 있습니까?

분류에서Dev

자동 레이아웃 종횡비 제약 조건을 사용하여 xib에서로드 된 UICollectionViewCell의 크기를 어떻게 계산할 수 있습니까?

분류에서Dev

제약 조건 레이아웃에 플로팅 버튼을 어떻게 추가 할 수 있습니까?

분류에서Dev

Netlogo : 특정 조건에서 감소 타이머의 "초기 값"을 어떻게 설치할 수 있습니까?

분류에서Dev

collectionView setCollectionViewLayout : animated를 사용하여 레이아웃 변경 기간을 어떻게 변경할 수 있습니까?

분류에서Dev

이전 조건이있는 벡터의 값을 어떻게 변경할 수 있습니까?

분류에서Dev

WordPress 게시물의 열 레이아웃 방식을 어떻게 제어 할 수 있습니까?

분류에서Dev

기본 요소 색상 Android 레이아웃을 어떻게 변경할 수 있습니까?

분류에서Dev

응용 프로그램이 "작동 중"임을 나타내는 대시의 마커 색상을 어떻게 변경할 수 있습니까?

분류에서Dev

지연없이 타임 아웃을 사용할 수 있습니까?

분류에서Dev

파이썬의 조건에 따라 여러 데이터 프레임 열의 데이터 유형을 어떻게 변경할 수 있습니까?

분류에서Dev

내 / 파티션의 크기를 어떻게 조정할 수 있습니까?

분류에서Dev

조건부 flexdashboard 레이아웃을 어떻게 만들 수 있습니까?

분류에서Dev

런타임에 클릭 할 때 버튼의 색상을 어떻게 변경할 수 있습니까?

분류에서Dev

자녀의 디렉토리에있는 파일 이름을 어떻게 변경할 수 있습니까?

분류에서Dev

PHP 기능-특정 형식 (UNIX 타임 스탬프 형식 포함)의 날짜 형식을 어떻게 변경할 수 있습니까?

분류에서Dev

"천둥 무리"문제는 무엇이며 스핀 록을 사용한 후에도 경쟁 조건이 어떻게 발생할 수 있습니까?

분류에서Dev

어떻게 VM이 종료 한 아웃와 안드로이드 스튜디오에서 버튼을 할 수 있습니까 할당 기능

분류에서Dev

OSX 라이브러리 디렉토리로 파일 변경을 어떻게 감지 할 수 있습니까?

분류에서Dev

레이아웃 안드로이드에서이 디자인을 어떻게 실현할 수 있습니까?

Related 관련 기사

  1. 1

    타임 아웃 기능을 어떻게 구현할 수 있습니까?

  2. 2

    swagger-ui의 레이아웃을 어떻게 변경할 수 있습니까?

  3. 3

    mercurial의 작업 디렉토리에 변경 사항이있는 경우 어떻게 체크 아웃을 중단 할 수 있습니까?

  4. 4

    이 자바에서 특정 시간 간격으로 업데이트되지 때 어떻게 null로 변수의 값을 타임 아웃 할 수 있습니까?

  5. 5

    Eclipse 작업 공간 선택 대화 상자의 레이아웃을 어떻게 변경할 수 있습니까?

  6. 6

    디지털 오션 방울의 "오류 : 순환"을 어떻게 극복 할 수 있습니까?

  7. 7

    컨트롤러 전에 디렉티브 기능을 어떻게 실행할 수 있습니까?

  8. 8

    MS Word 2013에서 내 테이블의 레이아웃 옵션을 어떻게 설정할 수 있습니까?

  9. 9

    경쟁 조건이있는 프로세스의 동기화에 타임 스탬프를 사용할 수 있습니까?

  10. 10

    Eclipse Mars에서 다중 창 퍼스펙티브 레이아웃을 어떻게 저장할 수 있습니까?

  11. 11

    자동 레이아웃 종횡비 제약 조건을 사용하여 xib에서로드 된 UICollectionViewCell의 크기를 어떻게 계산할 수 있습니까?

  12. 12

    제약 조건 레이아웃에 플로팅 버튼을 어떻게 추가 할 수 있습니까?

  13. 13

    Netlogo : 특정 조건에서 감소 타이머의 "초기 값"을 어떻게 설치할 수 있습니까?

  14. 14

    collectionView setCollectionViewLayout : animated를 사용하여 레이아웃 변경 기간을 어떻게 변경할 수 있습니까?

  15. 15

    이전 조건이있는 벡터의 값을 어떻게 변경할 수 있습니까?

  16. 16

    WordPress 게시물의 열 레이아웃 방식을 어떻게 제어 할 수 있습니까?

  17. 17

    기본 요소 색상 Android 레이아웃을 어떻게 변경할 수 있습니까?

  18. 18

    응용 프로그램이 "작동 중"임을 나타내는 대시의 마커 색상을 어떻게 변경할 수 있습니까?

  19. 19

    지연없이 타임 아웃을 사용할 수 있습니까?

  20. 20

    파이썬의 조건에 따라 여러 데이터 프레임 열의 데이터 유형을 어떻게 변경할 수 있습니까?

  21. 21

    내 / 파티션의 크기를 어떻게 조정할 수 있습니까?

  22. 22

    조건부 flexdashboard 레이아웃을 어떻게 만들 수 있습니까?

  23. 23

    런타임에 클릭 할 때 버튼의 색상을 어떻게 변경할 수 있습니까?

  24. 24

    자녀의 디렉토리에있는 파일 이름을 어떻게 변경할 수 있습니까?

  25. 25

    PHP 기능-특정 형식 (UNIX 타임 스탬프 형식 포함)의 날짜 형식을 어떻게 변경할 수 있습니까?

  26. 26

    "천둥 무리"문제는 무엇이며 스핀 록을 사용한 후에도 경쟁 조건이 어떻게 발생할 수 있습니까?

  27. 27

    어떻게 VM이 종료 한 아웃와 안드로이드 스튜디오에서 버튼을 할 수 있습니까 할당 기능

  28. 28

    OSX 라이브러리 디렉토리로 파일 변경을 어떻게 감지 할 수 있습니까?

  29. 29

    레이아웃 안드로이드에서이 디자인을 어떻게 실현할 수 있습니까?

뜨겁다태그

보관