使用AngularJS获取JSON数据并在返回的对象上添加方法

Gio*_*Gpx 9 json angularjs

我需要从Angular的服务器获取一些JSON数据.让我们说用户数据.我创建了这样的服务:

app.service('User', function($http) {
  retrun $http({method: 'GET', url:'/current_user'});
});
Run Code Online (Sandbox Code Playgroud)

在我的控制器中:

app.controller('SomeCtrl', function($scope, User) {
  User.success(function(data) {
    $scope.user = data;
  });
});
Run Code Online (Sandbox Code Playgroud)

这工作得很好,但如果我想向用户添加一些方法怎么办?例如,在我想要的视图中{{user.isAdmin()}}.这是正确的方法吗?我在哪里可以添加这些方法?

Ada*_*dam 3

如果您希望您的服务始终使用此方法返回一个对象,请执行以下操作:

app.service('User', function($http) {
  return $http({method: 'GET', url:'/current_user'}).
         then(function(response) {
           response.data.isAdmin = function() { return true; };
           return response.data;
         });
});
Run Code Online (Sandbox Code Playgroud)

现在,任何引用此 Promise 并使用 .then() 的未来代码都将检索新对象。查看承诺文档以获取更多信息。

http://docs.angularjs.org/api/ng .$q

请记住,通过在 httpPromise 上使用“then”,它将转换为正常的 Promise。您不再拥有“成功”和“错误”这样的便捷方法。

更好的做法可能是使用构造函数为要返回的对象创建一个类,该构造函数接受数据对象并分配适当的属性(或扩展实例)。这样你就可以简单地做类似的事情

return new User(val);
Run Code Online (Sandbox Code Playgroud)

您将获得您想要的所有方法(带有原型等)。