Angular V 1.3.15 $资源自定义PUT配置每个文档无法正常工作

时间:2015-06-12 23:24:56

标签: angularjs resources put

这是$ resource配置。

'use strict';
angular.module('MyApp')
    .factory('Doc',['$resource',function DocFactory($resource){
        return $resource('/db/doc/:dbName/:docId/:docRev',
                    null,
                    {'upDate': { method:'PUT' }}
                    );
    }]);

删除并获取正常工作

使用提交按钮

调用upDate函数
$scope.upDate = function(){
    Doc.upDate({dbName: 'lol-sched-teams',
                docId: $scope.team._id, 
                docRev: $scope.team._rev})
             .$promise.then(function (data) {
                 $scope.team = data;
 });
}

当我调试到angular时,我发现url的'/ db / doc /'部分工作正常但是':docId /:docRev'没有被解析以构建整个url。

因此,在Express服务器上,请求以'req:PUT / db / doc'

的形式出现

···

显然我错过了很多东西!

任何帮助表示赞赏

解决问题????无论如何都很清楚。

这真的没有很好的记录。令人高兴的是,角度代码写得很漂亮,易于理解。

$ resource真的有4个参数 params,data,function success(){},function error(){}

如果调试为angular,你会看到命令args的解析就是这种情况 所以我通过将对资源工厂的调用重新编码为:

来使PUT工作
Doc.upDate({dbName: 'lol-sched-teams', 
            docId: $scope.team._id, 
            docRev:    $scope.team._rev},
           $scope.team,
           function success(data){
              console.log(data);
           },
           function error(err){
              console.log(err);
           }
          )

在角度资源中,现在将解析为     A1 =参数,     A2 =数据,     a3 =成功,//是一个功能     a4 =错误//是一个函数

除非你使用调试器并查看它运行,否则这将是所有乱码,但是当你这样做时,它将是完全模糊的

1 个答案:

答案 0 :(得分:0)

'use strict';
angular.module('MyApp')
    .factory('Doc',
        [
            '$resource',
            function DocFactory($resource){
            /*You must set de params of the resource*/
            return $resource('/db/doc/:dbName/:docId/:docRev',
                        {
                            dbName : '@dbName',
                            docId : '@docId',
                            docRev : '@docRev'
                        },
                        { 
                            upDate: { 
                                method:'PUT',
                                url : '/db/doc/:dbName/:docId/:docRev' // can change
                                params: {
                                    dbName : '@dbName',
                                    docId : '@docId',
                                    docRev : '@docRev'
                                } 
                            }
                        }
            );
            }
        ]
    );


....

/*First you must have a Doc resource*/
$scope.upDate = Doc.get({     // or $scope.upDate = new Doc();
    dbName : 'someDbName',
    docId : 'someDocId',
    docRev : 'someDocRev'
}).$promise.then(
    function(){
        //$scope.upDate is now a Doc, 

        //Now you can call it here or in other event
        $scope.upDate.$upDate({
            dbName : 'newDbName',
            docId : 'someDocId',
            docRev : 'newDocRev'
        }).then(
            function(){
                console.log("OK!")
            }
        ).error(
            function(){
                console.log("UPS!")
            }
        );


    }
);