ng-init изначально не получает значения области видимости - PullRequest
1 голос
/ 27 марта 2019

Я вызываю функцию на ng-init.эта функция берет значения из области видимости.На самом деле, что происходит, мы загружаем страницу и при загрузке страницы используем ng-init

<div ng-init="somefunction(c,d)">
</div>

$scope.somefunction = function() {
  console.log($scope.a);
}

$scope.abc = function() {
  //calling another function 
  $scope.xyz();
}
$scope.xyz = function() {
  $scope.a = "hello";
}
$scope.abc();//called on controller load

Но я не получаю a в консоли, значит получаем undefined.Но после нажатия на любую кнопку на странице или некоторые вещи.Я получил a.Означает, что я не получаю это при загрузке страницы.

Ответы [ 3 ]

2 голосов
/ 27 марта 2019

Убедитесь, что сценарии загружены перед функциями javascript.В противном случае вы получите значения неопределенными.

<script src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.7.5/angular.min.js"></script>
<div ng-app="myApp" ng-controller="myCtrl">
  <div ng-init="somefunction()">
  </div>
</div>
<script>
  var app = angular.module('myApp', []);
  app.controller('myCtrl', function($scope) {
    $scope.somefunction = function() {
      $scope.abc();
      console.log($scope.a);
    }

    $scope.abc = function() {
      //calling another function 
      $scope.xyz();
    }
    $scope.xyz = function() {
      $scope.a = "hello";
    }

  });
</script>
2 голосов
/ 27 марта 2019

Вы должны назвать это как

<div ng-init="somefunction()">
</div>

Кроме того, есть вероятность, что вы можете получить неопределенное значение, если ng-init вызывается раньше $scope.abc()

1 голос
/ 27 марта 2019

Вместо использования ng-init вы можете напрямую вызывать функцию в контроллере.Примерно так:

<div></div>
$scope.a = '';
$scope.somefunction = function() {
  console.log($scope.a);
}

$scope.abc = function() {
  //calling another function 
  $scope.xyz();
}
$scope.xyz = function() {
  $scope.a = "hello";
}
$scope.abc();//called on controller load
$scope.somefunction();

Это упростит процесс, так как будет выполняться только тогда, когда все загружено и определено.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...