我需要从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()}}.这是正确的方法吗?我在哪里可以添加这些方法?
如果您希望您的服务始终使用此方法返回一个对象,请执行以下操作:
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)
您将获得您想要的所有方法(带有原型等)。
| 归档时间: |
|
| 查看次数: |
15123 次 |
| 最近记录: |