为了账号安全,请及时绑定邮箱和手机立即绑定

从服务器获取数据的推荐方法

/ 猿问

从服务器获取数据的推荐方法

catspeake 2020-02-03 14:23:02

什么是连接到服务器数据源AngularJS不使用推荐的方式$resource

$resource有很大的局限性,如:

  1. 没有使用适当的期货

  2. 不够灵活


查看完整描述

3 回答

?
HUH函数

在某些情况下,与后端通话时$ resource可能不合适。这显示了如何在不使用资源的情况下设置类似$ resource的行为。


angular.module('myApp').factory('Book', function($http) {

  // Book is a class which we can use for retrieving and 

  // updating data on the server

  var Book = function(data) {

    angular.extend(this, data);

  }


  // a static method to retrieve Book by ID

  Book.get = function(id) {

    return $http.get('/Book/' + id).then(function(response) {

      return new Book(response.data);

    });

  };


  // an instance method to create a new Book

  Book.prototype.create = function() {

    var book = this;

    return $http.post('/Book/', book).then(function(response) {

      book.id = response.data.id;

      return book;

    });

  }


  return Book;

});

然后,您可以在控制器内部:


var AppController = function(Book) {

  // to create a Book

  var book = new Book();

  book.name = 'AngularJS in nutshell';

  book.create();


  // to retrieve a book

  var bookPromise = Book.get(123);

  bookPromise.then(function(b) {

    book = b;

  });

};


查看完整回答
反对 回复 2020-02-03
?
ITMISS

我建议您使用$ resource。


它可能在下一版Angularjs中支持(URL覆盖)。然后,您将可以像这样进行编码:


// need to register as a serviceName

$resource('/user/:userId', {userId:'@id'}, {

    'customActionName':    {

        url:'/user/someURI'

        method:'GET',

        params: {

            param1: '....',

            param2: '....',

        }

    },

     ....

});

可以在ctrl范围内像这样处理返回回调。


// ctrl scope

serviceName.customActionName ({

    paramName:'param',

    ...

}, 

function (resp) {

    //handle return callback

}, 

function (error) {

    //handler error callback

});

可能您可以在更高的抽象级别上处理代码。


查看完整回答
反对 回复 2020-02-03
?
茅侃侃

Book.getAll = function(){return $ http.get('/ Book')。then(function(response){var books = []; for(var i = 0; i <response.data.length ; i ++){books.push(new Book(response.data [i]));}还书;}); };'

查看完整回答
反对 回复 2020-02-03

添加回答

回复

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信