2015-06-12 55 views
0

這是$資源配置。

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

刪除和獲取做工精細

更新函數被調用一個提交按鈕

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

當我調試到角我發現的「/ DB/DOC /」部分該網址工作正常,但':docId /:docRev'不被解析,以建立出整個網址。

所以在Express服務器的請求進來爲 'REQ:PUT/DB/DOC'

?????

顯然我錯過了一些東西!

任何幫助理解

問題解決了????反正很好理解。

這實在沒有很好的記錄。令人高興的是,角碼編寫精美,易於遵循。

$資源真正想要的4個參數 PARAMS,數據,功能成功(){},功能錯誤(){}

如果調試成角,你會看到這是對命令的解析的情況下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 =錯誤//是一個功能

這將是所有的亂碼,除非你使用調試器,並期待在運行它,但是當你這樣做將是非常模糊的

+0

錯誤的更新功能上面貼。它應該是:$ scope.upDate = function(){ Doc.upDate({dbName:'lol-sched-teams',docId:$ scope.team._id,docRev:$ scope.team._rev}) 。$ promise.then(function(data){0} {scope.team = data; }); } –

回答

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!") 
      } 
     ); 


    } 
);