Javascript Can';无法在Angular JS控制器中获取$scope属性?

Javascript Can';无法在Angular JS控制器中获取$scope属性?,javascript,angularjs,Javascript,Angularjs,我的Angular应用程序中有以下简单的控制器 vehicleSearchApp.controller('VehicleSearchCtrl', function ($scope, $location){ $scope.location = $location; $scope.$watch('location.search()', function() { $scope.target = ($location.search()).target;

我的Angular应用程序中有以下简单的控制器

vehicleSearchApp.controller('VehicleSearchCtrl', function ($scope, $location){

     $scope.location = $location;
     $scope.$watch('location.search()', function() {
         $scope.target = ($location.search()).target;
     }, true);

     $scope.changeTarget = function(name) {
         $location.search('target', name);
     }

     console.log($scope.target);
     console.log($scope);

 }
控制器底部的第一条console log语句返回undefined,但第二条console log语句返回如下所示的对象:


我在这个对象中看到了“target”属性以及许多其他方法/属性。如果我尝试使用“console.log($scope.target)”打印,为什么会在控制台中收到“undefined”消息?

可能是时间问题。当$scope.target的值在$watch语句激发之前未被设置时,您正在console.log中立即记录该值。很可能是在它登录到控制台并展开它时设置的,但不是在它到达第一个日志时设置的。

可能是时间问题。当$scope.target的值在$watch语句激发之前未被设置时,您正在console.log中立即记录该值。很可能是在它登录到控制台并展开它时设置的,但不是在它到达第一个日志时设置的。

可能是时间问题。当$scope.target的值在$watch语句激发之前未被设置时,您正在console.log中立即记录该值。很可能是在它登录到控制台并展开它时设置的,但不是在它到达第一个日志时设置的。

可能是时间问题。当$scope.target的值在$watch语句激发之前未被设置时,您正在console.log中立即记录该值。它很可能是在它登录到控制台时设置的,您可以展开它,但不是在它到达第一个日志时设置的。

这是一个计时问题:您可以看到
未定义的
,因为当代码到达
log
语句时,
$scope.target
还不可用


您可以将插件安装到chrome浏览器,以检查
$scope
元素的值。

这是一个计时问题:您会看到
未定义的
,因为当代码到达
log
语句时,
$scope.target
还不可用


您可以将插件安装到chrome浏览器,以检查
$scope
元素的值。

这是一个计时问题:您会看到
未定义的
,因为当代码到达
log
语句时,
$scope.target
还不可用


您可以将插件安装到chrome浏览器,以检查
$scope
元素的值。

这是一个计时问题:您会看到
未定义的
,因为当代码到达
log
语句时,
$scope.target
还不可用


您可以将插件安装到chrome浏览器中,以检查
$scope
元素的值。

如果我将console.log($scope.target)语句移动到console.log($scope)语句之后,我会得到同样的结果。console.log($scope.target)语句是控制器中的最后一行。在这种情况下,如何访问控制器中的变量?它异步设置$scope.target的值,这样就不管您将它移动到块中的哪个位置。如果将console.log($scope.target)移动到$watch中$scope.target=的后面,您将看到它的值已被记录。因此,您确实可以很好地访问它,但是在您记录它的地方它没有任何价值。当您console.log($scope)时,您正在记录对实际对象的引用(当时不是它的快照),因此当您在控制台中看到它时,它是在异步调用$watch之后。如果我将console.log($scope.target)语句移动到console.log($scope)语句之后,我会得到同样的结果。console.log($scope.target)语句是控制器中的最后一行。在这种情况下,如何访问控制器中的变量?它异步设置$scope.target的值,这样就不管您将它移动到块中的哪个位置。如果将console.log($scope.target)移动到$watch中$scope.target=的后面,您将看到它的值已被记录。因此,您确实可以很好地访问它,但是在您记录它的地方它没有任何价值。当您console.log($scope)时,您正在记录对实际对象的引用(当时不是它的快照),因此当您在控制台中看到它时,它是在异步调用$watch之后。如果我将console.log($scope.target)语句移动到console.log($scope)语句之后,我会得到同样的结果。console.log($scope.target)语句是控制器中的最后一行。在这种情况下,如何访问控制器中的变量?它异步设置$scope.target的值,这样就不管您将它移动到块中的哪个位置。如果将console.log($scope.target)移动到$watch中$scope.target=的后面,您将看到它的值已被记录。因此,您确实可以很好地访问它,但是在您记录它的地方它没有任何价值。当您console.log($scope)时,您正在记录对实际对象的引用(当时不是它的快照),因此当您在控制台中看到它时,它是在异步调用$watch之后。如果我将console.log($scope.target)语句移动到console.log($scope)语句之后,我会得到同样的结果。console.log($scope.target)语句是控制器中的最后一行。在这种情况下,如何访问控制器中的变量?它异步设置$scope.target的值,这样就不管您将它移动到块中的哪个位置。如果将console.log($scope.target)移动到$watch中$scope.target=的后面,您将看到它的值已被记录。因此,您确实可以很好地访问它,但是在您记录它的地方它没有任何价值。当您console.log($scope)时,您正在记录对实际对象的引用(当时不是它的快照),因此,当您在控制台中看到它时,它是在异步调用$watch之后。我有点困惑,我实际上只是试图将传入的URL值(在本例中是$scope.target变量)绑定到