2016-11-20 7 views
0

こんにちは、私はAPIを接続するための$ resourceサービスを書いています。ここ は、それが動作service.js私controller.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; 
}) 

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をdata()の部分ではなく、update()の部分の中に入れなければならないのはなぜですか?

答えて

0

を、data()は単にデフォルトとしてrestのAPI get save query remove deleteを公開しますReSTリソースを作成する機能です。

このdata()では、残りのリソースを作成しています。この関数をmyDataに渡すことは意味をなさないでしょう。 data()コールは、Resourceインスタンスを返します。このインスタンスには、パラメータを受け取るupdate API関数があります。

また、APIの構築時にデータを渡すことは意味がありません。

Hereは完全参照です

0

「データ」は$ 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 
     }); 
関連する問題