angular:将数据传递给$ resource服务

时间:2016-11-20 06:40:23

标签: javascript angularjs

您好我在那里写了一个$ resource服务来连接api。 这是service.js中的代码

.factory('selfApi2', function ($resource, localStorageService) {
var AB = {
  data: function (apiURL, header, data, params) {
    return $resource("http://localhost:4000/api" + apiURL, null, {
      update: {
        method: 'POST',
        headers: header,
        data: data,
        params: params
      }
    });
  }
};
return AB;
})

在我的controller.js

var header = {
'Content-Type': 'application/x-www-form-urlencoded'
};
var myData = {
'phone': '12345678'
};
selfApi2.data('/tableName',header,{where:{"name":"kevin"}).update(myData, function(result){
console.log("update Kevin's phone succeed",result);
})

它有效。但是为什么变量myData应该放在update()部分而不是data()部分?

2 个答案:

答案 0 :(得分:0)

我认为这是因为“data”是一个返回$ resource对象的函数。 请尝试以下方案:

    // service
    .factory('api', function ($resource) {
      var api = {};

      api.issues = $resource("http://localhost:4000/api/issues");

      api.users = $resource("http://localhost:4000/api/users", {}, {
        update: {
          method: 'PUT',
          headers: {
            'Content-Type': 'application/x-www-form-urlencoded'
          }
        },
      });

      return api;
    })

    // controller
    api.users
      .update({where:{name:'kevin'}})
      .$promise.then(function(success) {
        // DO SOMETHING
      });

    ...

    api.issues.query().$promise.then(
      function(success) {
        // DO SOMETHING
      });

答案 1 :(得分:0)

在您的情况下,var originalNumber = 0是一个仅创建data()资源的函数,该资源会将ReST apis rest公开为默认值。

因此,在此get save query remove delete调用中,您只需创建其余资源。使用此功能传递data()没有任何意义。 data()调用将返回myData实例,该实例将具有接受参数的Resource api函数。

并且,在api构建时传递数据是没有意义的。

Here是完整的参考资料