$ scope变量在init函数之外变为undefined

时间:2015-02-22 04:54:03

标签: angularjs scope

我有一个名为init的AngularJS函数,可以在我的HTML代码中调用:

<div ng-controller="main" ng-init="initpara('<?php echo values;?>', '<?php echo values;?>', '<?php echo values;?>')">

控制器已经定义,$ scope已经注入(此处不包含控制器内容)。我知道Angular函数正在接收参数,因为我已经在它上面做了一个console.log。我一直这样做是为了将PHP变量传递给我的控制器(尽管可能是一个不好的做法),但是,今天我遇到了一个问题。只要它们在函数外部,我的范围变量就会自动变为未定义。通常情况下,这种情况不会发生(尽管过去可能只是巧合)

$scope.initpara = function(userStatus, feedbackStatus, favoriteStatus) {
    $scope.userStatus = userStatus;
    console.log($scope.userStatus);
}
console.log($scope.userStatus);
Output:
undefined line 79 <- outside the function
1 (the result I want for userStatus) line 76 <- inside the function

还有另一种方法将PHP变量传递给AngularJS吗?这很奇怪,因为它以前从未对我这么做过。

1 个答案:

答案 0 :(得分:2)

您还没有在记录的那一刻初始化$scope.userStatus,因为您刚刚定义了$scope.initpara而没有先调用它。 Angular是异步的,因为当你声明initpara时它可能还没有加载DOM,我的猜测是它只在控制台日志之后初始化数据。