AngularJs资源Json错误

时间:2017-09-28 14:20:22

标签: angularjs json angular-resource

user.json文件只有一个条目:

{ 
    "id": 1, 
    "protocol": "http", 
    "ip": "255.255.255.0", 
    "port": "80",
    "userName": "usemanager", 
    "password": "password", 
    "diskPath": "D:nwjs"
}  

工厂代码:

duseApp.factory('duseConnect', function ($resource) {
    return $resource("user.json");
});

控制器代码:

duseApp.controller("duseLoginController", function ($scope,duseConnect,  
    $location) {
        var user = duseConnect.get({id: 1});
        console.log(user);
        console.log(user.id);
    });

用户获取列出。 但是console.log(user.id); is undefined。 为什么会这样?

console.log(user);

的OutPut

output

2 个答案:

答案 0 :(得分:0)

看起来您的工厂正在返回承诺,在这种情况下,您需要从承诺中提取数据。

duseConnect.get({id: 1}).then (function(user) {
   console.log(user);
   console.log(user.id);
});

答案 1 :(得分:0)

$ resource的返回是一个资源" class"具有默认资源操作集的方法的对象,可选择使用自定义操作进行扩展。默认设置包含以下操作:

{ 'get':    {method:'GET'},
  'save':   {method:'POST'},
  'query':  {method:'GET', isArray:true},
  'remove': {method:'DELETE'},
  'delete': {method:'DELETE'} 
};

使用它的方式可能是:

var User = $resource('/user/:userId', {userId:'@id'});
var user = User.get({userId:123}, function() {
  user.abc = true;
  user.$save();
})

在您的情况下,您可以执行以下操作:

duseApp.controller("duseLoginController", function ($scope,duseConnect,  
    $location) {
        var user = duseConnect.get({id: 1}, function (response) {);
        console.log(response);
        console.log(response.id);
    }});