Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在AngularJS中访问由$resource factory服务创建的$scope元素的属性_Javascript_Angularjs - Fatal编程技术网

Javascript 在AngularJS中访问由$resource factory服务创建的$scope元素的属性

Javascript 在AngularJS中访问由$resource factory服务创建的$scope元素的属性,javascript,angularjs,Javascript,Angularjs,我希望能够访问通过$resource factory服务REST API创建的对象的属性 services.js: controllers.js: 在controllers.js中,当通过console.log$scope.userInfo显示时,userInfo包含几个属性,但是我无法使用点或括号符号访问这些属性 console.log$scope.userInfo示例输出: Resource {$promise: Object, $resolved: false, $get: functio

我希望能够访问通过$resource factory服务REST API创建的对象的属性

services.js:

controllers.js:

在controllers.js中,当通过console.log$scope.userInfo显示时,userInfo包含几个属性,但是我无法使用点或括号符号访问这些属性

console.log$scope.userInfo示例输出:

Resource {$promise: Object, $resolved: false, $get: function, $save: function, $query: function…}
$promise: Object
$resolved: true
id: 185
last_update: "2014-08-13T08:56:19.546"
name: "test_user"
region: "na"
尽管获得了上述输出,但我无法访问,例如,$scope.userInfo.name;它在发送到控制台时打印未定义。我需要userInfo中的一些数据来编写对同一API的进一步请求


作为一个资源类型的对象,我是否遗漏了一些特殊的东西?

Resources的get方法是一个异步调用。您可以在后端响应后访问属性

您可以使用$resolved属性对其进行测试

$scope.userInfo = userService.get({region: $routeParams.region, name: $routeParams.name});
console.log($scope.userInfo.$resolved)
将始终打印错误

要在值准备就绪后访问它们,可以通过两种方式使用资源的$PROMITE回调:

$scope.userInfo = userService.get({region: $routeParams.region, name: $routeParams.name}, function(userInfo) {
    console.log(userInfo.name);
    console.log($scope.userInfo.name); // will print the same
});
或:

您还可以使用resource.$promise.reject回调处理错误条件。 请参阅$resource的更多内容

$scope.userInfo = userService.get({region: $routeParams.region, name: $routeParams.name});
console.log($scope.userInfo.$resolved)
$scope.userInfo = userService.get({region: $routeParams.region, name: $routeParams.name}, function(userInfo) {
    console.log(userInfo.name);
    console.log($scope.userInfo.name); // will print the same
});
$scope.userInfo = userService.get({region: $routeParams.region, name: $routeParams.name});
$scope.userInfo.$promise.then(function(userInfo) {
    console.log(userInfo == $scope.userInfo); // true
});