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

问题描述 投票:1回答:3

我在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。意味着我没有在页面加载时得到这个。

javascript angularjs
3个回答
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();

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


2
投票

你必须称之为

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

除此之外,如果在ng-init之前调用$scope.abc(),你可能会被定义为未定义


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>
© www.soinside.com 2019 - 2024. All rights reserved.