Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在restanglar中使用PUT方法_Javascript_Angularjs_Restangular - Fatal编程技术网

Javascript 如何在restanglar中使用PUT方法

Javascript 如何在restanglar中使用PUT方法,javascript,angularjs,restangular,Javascript,Angularjs,Restangular,我正在使用restangular,但我对“Put”方法有一个问题,它不能按预期工作 我的角度服务代码 var userService = function (restangular) { var resourceBase = restangular.all("account/"); restangular.addResponseInterceptor(function (data, operation, what, url, response,

我正在使用restangular,但我对“Put”方法有一个问题,它不能按预期工作

我的角度服务代码

 var userService = function (restangular) {
            var resourceBase = restangular.all("account/");

            restangular.addResponseInterceptor(function (data, operation, what, url, response, deferred) {
                if (operation == "getList") {
                    return response.data;
                }
                return response;
            });
      this.getUserById = function (id) {

                return resourceBase.get(id);
                // return restangular.one("account", id).get();
            };
            this.updateUser = function(user) {
                return user.Put();
            };
}
我的控制器代码

 var userEditController = function (scope, userService, feedBackFactory, $routeParams) {

        scope.user = undefined;

        scope.updateUser = function () {

            userService.updateUser(scope.user).then(function (data) {
                feedBackFactory.showFeedBack(data);
            }, function (err) {
                feedBackFactory.showFeedBack(err);
            });
        };

        userService.getUserById($routeParams.id).then(function (data) {
            scope.user = data.data;   **// Please not here I am reading the object using service and this object is getting updated and pass again to the service for updating** 

        }, function (er) {

            feedBackFactory.showFeedBack(er);
        });

    };

但是我得到一个错误“Put”不是函数,我检查了用户对象,发现用户对象没有重新进行语法化(没有找到任何其他方法)。如何解决它

您只能在重新角度化的对象中使用put方法。若要在任何对象上触发put,需要检查put方法,若对象不包含任何put方法,则需要在重新设置角度的对象中转换该对象

将updateUser更改为以下内容:

 this.updateUser = function(user) {
    if(user.put){
        return user.put();
    } else {
        // you need to convert you object into restangular object
        var remoteItem = Restangular.copy(user);

        // now you can put on remoteItem
        return remoteItem.put();
    }
 };

copy方法将向对象中添加一些额外的Restangular方法。简而言之,它会将任何对象转换为重新角度化的对象。

您只能“放置”在数据对象上

customPUT([elem,path,params,headers])
就是您想要的。像这样使用它:

Restangular.all('yourTargetInSetPath').customPUT({'something': 'hello'}).then(
  function(data) { /** do something **/ },
  function(error) {  /** do some other thing **/ }
);

您是如何让它知道类型是
user
?例如,我得到
http://localhost:8100/api/undefined
使用
copy()方法时。
未定义的
应该是
用户
对象。如何使它正确?谢谢