我正在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
。意味着我在页面加载时没有得到这个。
答案 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();
它将简化流程,因为只有在加载并定义所有内容后才会执行。