我有以下簡單的控制器在我的角度應用
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);
}
向控制器的底部的第一個控制檯日誌語句返回不確定的,但第二個控制檯日誌語句返回一個對象,如下所示:
我看到'target'屬性以及此對象中的其他方法/屬性。如果我嘗試使用「console.log($ scope.target)」進行打印,爲什麼我會在控制檯中收到「未定義」消息?
如果我將console.log($ scope.target)語句移到console.log($ scope)語句之後,我會得到同樣的結果。 console.log($ scope.target)語句是控制器中的最後一行。在這種情況下,我如何訪問我的控制器中的變量? –
它是異步設置$ scope.target的值,所以它不會在你移動它的那個塊的哪個位置。如果將console.log($ scope.target)移動到$ watch中的$ scope.target =之後,您將看到它的值已記錄。所以你確實可以訪問它,但是它在你記錄它的地方沒有價值。當你console.log($ scope)時,你記錄了一個對實際對象的引用(當時不是它的快照),所以當你在控制檯中看到它時,就是在異步調用$ watch之後。 –