programing

ng-init으로 설정된 변수가 AngularJS의 $scope에서 정의되지 않은 이유는 무엇입니까?

telecom 2023. 3. 11. 08:36
반응형

ng-init으로 설정된 변수가 AngularJS의 $scope에서 정의되지 않은 이유는 무엇입니까?

내 뷰에 설정할 변수가 있습니다.ng-init컨트롤러로 접속하려고 합니다.하지만 접속하려고 하면,undefined.

관련 코드 조각:

제 견해:

<div ng-controller="MyCtrl">
  <div ng-init="pageTitle = 'kittens'">
  </div>
</div>

내 컨트롤러:

var MyCtrl;

MyCtrl = function($scope) {
  return console.log($scope.pageTitle);
};

JSFiddle

내가 뭘 놓쳤지?

변수가 init될 때까지 기다립니다.

$scope.$watch('pageTitle', function () {
    console.log($scope.pageTitle); 
});

JavaScript가 함수를 정의하는 방법을 활용하여 $watch(jsfiddle) 대신 ng-init 함수를 사용할 수도 있습니다.

<div ng-app>
    <div ng-controller="MyCtrl" ng-init="pageTitleEquals('kittens')">
        Page title is {{ pageTitle }}
    </div>
</div>

컨트롤러:

var MyCtrl = function($scope) {   
    $scope.pageTitleEquals = function(title) {
        $scope.pageTitle = title;
    }
};

이 질문도 비슷합니다.ng-init을 사용하여 스코프 속성을 설정하려면 어떻게 해야 합니까?

pageTitle 변수가 $scope 객체에 추가되기 전에 컨트롤러가 생성되고 있습니다.

생성자처럼 "싱글 타임 초기화"를 수행하므로 변수를 사용한 후 워치를 바인딩 해제할 것을 권장합니다.

var pageTitleWatch = $scope.$watch('pageTitle', function () {
    console.log($scope.pageTitle);
    // Now just unbind it after doing your logic
    pageTitleWatch();
});

언급URL : https://stackoverflow.com/questions/18608161/why-is-the-variable-set-in-ng-init-undefined-in-scope-in-angularjs

반응형