Javascript Web Api 2的角度资源设置
所以我有我的api控制器:Javascript Web Api 2的角度资源设置,javascript,asp.net,angularjs,asp.net-web-api,Javascript,Asp.net,Angularjs,Asp.net Web Api,所以我有我的api控制器: public BlogController { public Blog[] Get() { return context.Blogs.ToArray(); } public Blog Get(Guid id) { return context.Blogs.FirstOrDefault(b => b.Id.Equals(id)); } } 如何设置角度资源以模拟此情况 我从这个开始
public BlogController
{
public Blog[] Get()
{
return context.Blogs.ToArray();
}
public Blog Get(Guid id)
{
return context.Blogs.FirstOrDefault(b => b.Id.Equals(id));
}
}
如何设置角度资源以模拟此情况
我从这个开始:
angular.module('spaTestApp.home.services', [])
.factory('blogRepository', ['$resource', function($resource) {
return {
get: function() {
return $resource('/api/Blogs').query();
}
}
}
]);
然后我想我可能需要这样做:
angular.module('spaTestApp.home.services', [])
.factory('blogRepository', ['$resource', function($resource) {
return $resource('/api/Blogs/:id', {}, {
query: {method:'GET', params:{id:'WHAT_GOES_HERE'}, isArray:true}
});
}]);
我不完全确定在这里是什么,以及如何调用get,我假设它是:
blogRepository.query($selectedId);
您不需要在资源定义时提供所选值,因此可以将其从$resource
配置对象中删除
相反,当你调用你所做的方法时
blogRepository.query({id:$selectedId})代码>如果您查看angular文档,它会解释您将在何处执行此操作。
有一节讨论用户资源,如下所示:
var User = $resource('/user/:userId', {userId:'@id'});
var user = User.get({id:123}, function() {
user.abc = true;
user.$save();
});
使用工厂时,您可以按照以下路线操作
app.factory('Blog', ['$resource', function($resource) {
return $resource('/api/v1/blogs/:id', {id: '@id'});
}
]);
或者如果要添加更新和查询部分
app.factory('Blog', ['$resource', function($resource) {
return $resource('/api/v1/blogs/:id', {id: '@id'},
{
'update': { method:'PUT' }
'query': { method:'GET', isArray:true},
});
}
]);
然后当打电话给一个get
Blog.get({id: $scope.selectedId});
或者使用收款电话
Blog.query();
这也可以像承诺一样处理
Blog.get({id: $scope.selectedId})
.$promise.then(function(response){
//do something with response
});
如果您想获取一组资源
$scope.blogs; //If this is your blogs collection
Blog.get()
.$promise.then(function(response){
$scope.blogs = response;
});
请记住,console.log(response)将返回一个包含两个额外组件的数组,即promise已解析和$promise。将其设置为scope变量后,它将只是一个资源数组。在定义路由时已配置路由。它将只使用具有相同名称属性的对象的值替换模板id。试试看。我的资源看起来是这样的:$resource('/api/Blogs/:id')