1
我创建了一个用于获取JSON数据的Angular工厂。我正在使用$resource
和get
方法从服务器检索此JSON对象。该对象本身包含子对象。AngularJS - 如何使用我的控制器中使用Factory GET请求检索的数据?
我一直在试图利用我这个厂在我的控制器中检索到的数据,但是当我打电话的$scope
变量,我得到的这个
一些变化无法读取的未定义的属性propertyName的。
我可以读取属性,当我登录到控制台,所以我不明白为什么它只是消失。为了诊断它,我尝试通过引用传递另一个变量。
问题是我可以通过记录控制台找到对象及其关键字。问题是,当我尝试使用这些数据时,对象键变为undefined
。我不知道为什么会发生这种情况。
NewOrder.get({"id": $stateParams.loopId, "orderId": $stateParams.orderId}).$promise.then(function(order) {
$scope.myData = order["data"];
console.log("this is an order", order);
});
这里是我厂
angular.module('myApp')
.factory('NewOrder', function($resource) {
return $resource('/api/loops/:id/orders/:orderId');
});
我发现,如果我创建一个新的变量,并设置它等于myData
的价值,我的钥匙消失里面的对象。
这工作
$scope.getOrder = function() {
console.log($scope.myData);
}
=> Object {recruitingLeague: "NAHL", playerPosition: "LeftDefense", playerDOB: Object, playerHeight: Object, playerWeight: Object…}
创建一个新的变量,并通过引用传递上一个变量的值(诊断目的)没有。
$scope.newData = $scope.myData;
$scope.getOrder = function() {
console.log($scope.newData);
}
=> undefined
我不明白为什么我从服务器上检索到的对象突然消失。
所以我不能使用异步加载的数据?那么,如何在我的控制器中使用JSON数据,而不会在我称之为消失时使用? –
myData不会消失。当你将它分配给另一个变量时,它仍然是'未定义的'。与观察者一起使用。 '$ scope。$ watch('myData',function(newVal){if(!newVal)return;/* use $ scope.myData)here * /}'。但是你已经有了承诺链,所以你可以在'then'内操作数据,这是数据已经存在的时刻。 – estus