程序问答   发布时间:2022-06-02  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了AngularJS $ resource RESTful示例大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决AngularJS $ resource RESTful示例?

开发过程中遇到AngularJS $ resource RESTful示例的问题如何解决?下面主要结合日常开发的经验,给出你关于AngularJS $ resource RESTful示例的解决方法建议,希望对你解决AngularJS $ resource RESTful示例有所启发或帮助;

$ resource旨在从端点检索数据,对其进行处理并将其发送回。您已经有了 其中的一些功能 ,但是您并没有真正利用它来完成它。

在您的资源上有自定义方法是很好的,但是您不想错过OOTB附带的很酷的功能。

:我认为我本来解释得不够好,但是$resource做了一些带有回报的时髦东西。Todo.get()Todo.query()两个返回 的资源对象, 把它传递到 回调 的GET完成时。它在幕后做了一些花哨的承诺,这意味着您可以$save()get()回调实际触发之前调用,并且它将等待。最好只在promisethen()或callBACk方法中处理资源。

标准使用

var Todo = $resource('/API/1/todo/:ID');

//create a todo
var todo1 = new Todo();
todo1.foo = 'bar';
todo1.something = 123;
todo1.$save();

//get and update a todo
var todo2 = Todo.get({ID: 123});
todo2.foo += '!';
todo2.$save();

//which is basically the same as...
Todo.get({ID: 123}, function(todo) {
   todo.foo += '!';
   todo.$save();
});

//get a List of todos
Todo.query(function(todos) {
  //do something with todos
  angular.forEach(todos, function(todo) {
     todo.foo += ' something';
     todo.$save();
  });
});

//delete a todo
Todo.$delete({ID: 123});

同样,对于在OP中发布的内容,可以获取一个资源对象,然后在其上调用任何自定义函数(理论上):

var something = src.GetTodo({ID: 123});
something.foo = 'hi there';
something.updatetodo();

我去之前尝试过OOTB实施,但是发明了自己的。而且,如果您发现自己没有使用的任何默认功能$resource,则可能应该$http自己使用。

更新:Angular 1.2和Promises

从Angular 1.2开始,资源支持承诺。但是他们没有改变其余的行为。

$resource通过使用诺言,您需要$promise在返回值上使用属性。

使用承诺的示例

var Todo = $resource('/API/1/todo/:ID');

Todo.get({ID: 123}).$promise.then(function(todo) {
   // success
   $scope.todos = todos;
}, function(errResponsE) {
   // fail
});

Todo.query().$promise.then(function(todos) {
   // success
   $scope.todos = todos;
}, function(errResponsE) {
   // fail
});

请记住,该$promise属性是具有与上面返回的值相同的属性。所以你会变得很奇怪

这些是等效的

var todo = Todo.get({ID: 123}, function() {
   $scope.todo = todo;
});

Todo.get({ID: 123}, function(todo) {
   $scope.todo = todo;
});

Todo.get({ID: 123}).$promise.then(function(todo) {
   $scope.todo = todo;
});

var todo = Todo.get({ID: 123});
todo.$promise.then(function() {
   $scope.todo = todo;
});

解决方法

@H_607_74@

我想使用$ resource调用我的RESTful Web服务(我仍在使用它),但是我想知道我是否首先正确地使用了AngularJS脚本。

待办事项DTO具有: {id,order,content,donE}

:cmd因此,我可以调用api/1/todo/reset以清除数据库中的todo表。

这是带有我的理解注释的代码:

function Todoservice($resourcE) {
    var src = $resource('api/1/todo/:id:cmd',{id: "@id",cmd: "@cmd"},//parameters default
              {
                ListTodos: { method: "GET",params: {} },GetTodo: { method: "GET",params: { id: 0 } },CreateTodo: { method: "POST",params: { content: "",order: 0,done: false } },updateTodo: { method: "PATCH",params: { /*...*/ } },deleteTodo: { method: "deletE",ResetTodos: { method: "GET",params: { cmd: "reset" } },});

    //Usage:

    //GET without ID
    //it calls -> api/1/todo
    src.ListTodos();

    //GET with ID
    //it calls -> api/1/todo/4
    src.GetTodo({ id: 4 });

    //POST with content,done
    //it calls -> api/1/todo
    src.CreateTodo({ content: "learn Javascript",order: 1,done: false });

    //updatE content only
    //it calls -> api/1/todo/5
    src.updateTodo({ id: 5,content: "learn AngularJS" });

    //updatE done only
    //it calls -> api/1/todo/5
    src.updateTodo({ id: 5,done: true });

    //RESET with cmd
    //it calls -> api/1/todo/reset
    src.ResetTodos();
}

我不确定的一件事是PATCH方法,我不想更新所有内容,可以仅更新一个字段吗?我是否正确构建了这段代码?

大佬总结

以上是大佬教程为你收集整理的AngularJS $ resource RESTful示例全部内容,希望文章能够帮你解决AngularJS $ resource RESTful示例所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。