2016-01-12 109 views
1

如何將$resource轉換爲原始$http服務? $resource做什麼$http不是嗎?

return $resource(API_LINK+'/api/users/', { 
    id: '@_id' 
}, 
{ 
    changePassword: { 
    method: 'PUT', 
    params: { 
     controller:'password' 
    } 
    }, 
    get: { 
    method: 'GET', 
    params: { 
     id:'me' 
    } 
    }) 
+0

參考這個問題的差異$ http和$資源之間。 http://stackoverflow.com/questions/13181406/angularjs-http-and-resource – Thangadurai

+0

get:function(){ $ http.get(API_LINK +'/ api/users /',{id:'me',controller : '密碼'}) .success(功能(響應){ 的console.log( '響應',響應); //defer.resolve(response); }) .error(函數(ERR){ console.log('err',err); // defer.reject(err); }); // return defer.promise; } – Shrikant

+0

我做了這個和API工作正常,但給一個錯誤,錯誤是: – Shrikant

回答

2

$resource是簡單地在$http一個抽象的想法,該API方便使用REST風格的端點。有沒有什麼$resource可以做,不能用$http寫。一種方法來寫上面的工廠利用$http包括...

// assumption that API_LINK is an injectable constant 
.factory('MyService', function(API_LINK, $http) { 

    function changePassword(params) { 
     return $http.put(API_LINK +'/api/users/', params); 
    } 

    function get(id) { 
     return $http.get(API_LINK +'/api/users?id=' + id); 
    } 

    return { 
     changePassword: changePassword, 
     get: get 
    } 
}); 

與下面的用法......

.controller('ctrl', function($scope, MyService) { 

    MyService.get('me').then(function(response) { 
     // ... 
    }); 

    MyService.changePassword({ controller: 'password' }).then(function(response) { 
     // ... 
    }); 
}); 

如果你需要採取與參與貴廠功能總量控制承諾解決,我會建議檢查出AngularJS $q API

+0

id:@_ id呢?我應該在哪裏把它 – Shrikant

+0

謝謝..它給我的方式來解決 – Shrikant

0

,我們也可以做這樣的另一種方式:

get: function() { 
    var id = 'me'; 
    $http.get(API_LINK + '/api/users/' + id) 
     .success(function(response) { 
     defer.resolve(response); 
     }) 
     .error(function(err) { 
     console.log('err', err); 
     defer.reject(err); 
     }); 
    return defer.promise; 
    }, 

    changePassword: function() { 
    $http.put(API_LINK + '/api/users/', {controller:'password'}) 
     .success(function(response) { 
     defer.resolve(response); 
     }) 
     .error(function(err) { 
     console.log('err', err); 
     defer.reject(err); 
     }); 

    return defer.promise; 
    } 
相關問題