ng-init最初没有获取范围值

时间:2019-03-27 05:47:57

标签: javascript angularjs

我正在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 个答案:

答案 0 :(得分:2)

您必须将其称为

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

此外,如果在ng-init之前调用$scope.abc(),您可能会变得不确定。

答案 1 :(得分:2)

确保在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 :(得分:1)

您可以直接在控制器中调用函数,而不是使用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();

它将简化流程,因为只有在加载并定义所有内容后才会执行。