source

ng-init을 사용하여 스코프 속성을 설정하려면 어떻게 해야 합니까?

gigabyte 2023. 2. 10. 21:59
반응형

ng-init을 사용하여 스코프 속성을 설정하려면 어떻게 해야 합니까?

ng-init를 사용하여 $scope 속성 값을 설정하려고 하는데 컨트롤러의 javascript에서 해당 값에 접근할 수 없습니다.내가 뭘 잘못하고 있지?여기 바이올린이 있습니다.http://jsfiddle.net/uce3H/

마크업:

<body ng-app>
    <div ng-controller="testController" >
        <input type="hidden" id="testInput" ng-model="testInput" ng-init="testInput='value'" />
    </div>
    {{ testInput }}
</body>

javascript:

var testController = function ($scope) {
     console.log($scope.testInput);
}

javascrippt에서는 $scope.testInput이 정의되어 있지 않습니다.'가치'가 되어서는 안 되는가?

각도 할당을 완료하기 전에 설정 값을 읽으려고 합니다.

데모:

var testController = function ($scope, $timeout) {
    console.log('test');
    $timeout(function(){
        console.log($scope.testInput);
    },1000);
}

이상적으로는$watch@Bereraba가 제안한 대로 타이머를 제거합니다.

var testController = function ($scope) {
    console.log('test');
    $scope.$watch("testInput", function(){
        console.log($scope.testInput);
    });
}

함수로 ng-init을 설정하기만 하면 됩니다.시계를 사용할 필요가 없습니다.

<body ng-controller="MainCtrl" ng-init="init()">
  <div ng-init="init('Blah')">{{ testInput }}</div>
</body>

app.controller('MainCtrl', ['$scope', function ($scope) {
  $scope.testInput = null;
  $scope.init = function(value) {
    $scope.testInput= value;
  }
}]);

여기 예가 있어요.

플런커

HTML:

<body ng-app="App">
    <div ng-controller="testController" >
        <input type="hidden" id="testInput" ng-model="testInput" ng-init="testInput=123" />
    </div>
    {{ testInput }}
</body>

JS:

angular.module('App', []);

testController = function ($scope) {
    console.log('test');
    $scope.$watch('testInput', testShow, true);
    function testShow() {
      console.log($scope.testInput);
    }
}

만지작거리다

CodeHater가 말한 것처럼 변수가 설정되기 전에 접근합니다.

이를 수정하려면 ng-init 지시어를 첫 번째 div로 이동합니다.

<body ng-app>
    <div ng-controller="testController" ng-init="testInput='value'">
        <input type="hidden" id="testInput" ng-model="testInput" />
       {{ testInput }}
    </div>
</body>

잘 될 거야!

이 코드를 시험해 보세요

var app = angular.module('myapp', []);
  app.controller('testController', function ($scope, $http) {
       $scope.init = function(){           
       alert($scope.testInput);
   };});

<body ng-app="myapp">
      <div ng-controller='testController' data-ng-init="testInput='value'; init();" class="col-sm-9 col-lg-9" >
      </div>
</body>

에 문제가 있었습니다.$scope.$watch하지만 많은 테스트를 거쳐서 제가 알게 된 건data-ng-model="User.UserName"이름이 안좋아서 제가 이름을 바꾼 후에data-ng-model="UserName"모든 것이 잘 작동했다.제 예상으로는.문제의 원인명을 지정합니다.

언급URL : https://stackoverflow.com/questions/19981627/how-to-set-scope-property-with-ng-init

반응형