我将我的范围对象传递给我的指令,这很好用!在获取请求后,我使用名为project的属性更新我的范围。这包含一些值,如标题,内容等...如果我记录这一切一切正常,但当我尝试记录scope.project我得到消息undefined,但当我记录范围我看到JSON树中的项目对象......这里会发生什么?
所有控制台日志都显示正确的信息,但我无法访问它...
指令:
.directive('project', ['$http', function ($http) {
return {
restrict: 'AEC',
link: function (scope, element, attrs) {
console.log(scope); // gives perfect json object including the project object
console.log(scope.project.content); // gives undefined
}
}
}]);
模板:
<div showcontent id="createdcontent"></div>
controller :(这是我设置范围的地方)
$http.get ('/api/projects/' + id)
.success (function (data) {
$scope.project = data.project;
})
.error (function (data){
console.log("error: " + data);
});
非常感谢
答案 0 :(得分:1)
您正在异步执行某些操作,并且console.log不会等待http.get正在执行的任何异步任务,或者何时返回,因此,在更改项目的值之前正在执行控制台日志,因此它提供了undefined 。将回调添加到您正在使用的$ http方法,然后执行该console.log,或者在请求完成时发送您想要完成的所有操作的回调。我一周前遇到过这个问题,问题是我的console.log在异步方法设置变量之前就已经执行了。例如,在控制器上使用http.get请求,只需添加console.log。
$http.get ('/api/projects/' + id)
.success (function (data) {
$scope.project = data.project;
console.log(scope.project.content);
})
.error (function (data){
console.log("error: " + data);
});