AngularJs的$scope就像一个本地变量
AngularJs $scope like a local var
我有一些问题。
app.controller('groupConfigCntrl', ['$http', '$scope', '$routeParams', function($http, $scope, $routeParams){
var id = $routeParams.id,
info = {};
$http.post("/g/getGroup/", {id: id}).success(function(data) {
$scope.info = data;
});
console.log($scope.info);
});
在这种情况下,$scope.info是未定义的。
$http.post("/g/getGroup/", {id: id}).success(function(data) {
$scope.info = data;
console.log($scope.info);
});
在这种情况下,$scope.info-有一些数据。为什么$scope表现得像本地var?帮助,当我尝试在视图中绑定数据时,它不起作用。但在类似的控制器中,它是有效的。
控制器工作原理:
app.controller('groupCntrl', ['$http', '$scope', '$uibModal', '$routeParams', '$location', function($http, $scope, $uibModal, $routeParams, $location){
var id = $routeParams.id;
$http.post("/g/getGroup/", {id: id}).success(function(data) {
$scope.info = data;
});
})
这是因为callback
。当您在第一种情况下console.log
时,它在返回回调之前执行,此时$scope.info
就是undefined
。执行以下操作以获得预期结果:
app.controller('groupConfigCntrl', ['$http', '$scope', '$routeParams', function($http, $scope, $routeParams){
var id = $routeParams.id,
info = {};
$http.post("/g/getGroup/", {id: id}).success(function(data) {
$scope.info = data;
console.log($scope.info);
});
});
如果您想了解callback
在javascript中的工作原理,可以查看nexttick
。例如:https://howtonode.org/understanding-process-next-tick
在您的示例中,.success()方法是一个回调。当post方法完成时,此方法将异步执行。
这意味着,当您在第一个示例中记录输出时,$scope.info值可能尚未设置。
从你的评论来看,我怀疑你遇到的问题是,当设置了$scope.info值时,视图没有更新?如果是这种情况,您需要将回调封装在$apply方法中
$http.post("/g/getGroup/", {id: id}).success(function(data) {
$scope.$apply(function(){
$scope.info = data;
});
});
变量$scope.info
在$http
发布完成后的成功回调中定义。
$http.post("/g/getGroup/", {id: id}).success(function(data) {
$scope.info = data;
console.log($scope.info);
});
您无法访问$scope.info
,因为它在$http
调用之前是未定义的。
相关文章:
- 导航到特定事件的另一个变量页面
- 我可以在Javascript/jQuery中使用一个变量作为键吗
- 使用mongodb更新中的一个变量
- 将节点数据分配给另一个变量jstree
- Javascript:在激发函数后返回一个变量以供使用
- 替换另一个变量对象中的变量值
- 什么'它的意思是当一个变量位于括号外时
- 可以't将sessionStorage设置为Javascript中的一个变量
- 在Flickr API的标签参数中传递一个变量
- 从Jquery函数中获取一个变量
- 为两个ID设置一个变量的正确语法
- 如何将变量值附加到另一个变量
- 通过加载函数发送一个变量
- 如何将一个变量从一个控制器传递到合金中的另一个控制器
- 如何在Jquery函数中为自动完成文本区域指定一个变量作为Id
- Javascript未在其中一个变量上输出0
- 保留“;这个“;在一个变量中;这个“;使用此变量
- 是否可以在另一个变量中使用未声明的变量
- JS/ANGULAR使用一个变量's值作为另一个对象的键
- 如何每秒从一个变量中提取一定次数的javascript/html