[AngularJS] $resource
$resource Refactor
Let's convert our custom Note factory to use Angular resource. Removeall()
, find()
, and create()
methods from our Note
service and replace them with the $resource
equivalent.
angular.module('NoteWrangler') .factory('Note', ['$http', function NoteFactory($http) { return { all: function() { return $http({method: 'GET', url: "/notes"}); }, find: function(id) { return $http({method:'GET', url: '/notes/' + id}); }, create: function(noteObj) { return $http({method: 'POST', url: '/notes/', data: noteObj}); } }; }]);
Include angular-resource.js
in index.html
so that we can use it in our app. It is located in the same directory as our angular.js
file.
<script src="./js/vendor/angular-resource.js"></script>
Replace the existing object that is returned from the Note
factory with an Angular resource that uses '/notes'
as the data source.
angular.module('NoteWrangler') .factory('Note', ['$resource', function NoteFactory($resource) { return $resource("/notes"); }]);
Using a $resource-ful Note Service
Now that our Note
factory is using ngResource
, we'll need to update how it's used in NotesIndexController
.
angular.module('NoteWrangler') .controller('NotesIndexController', ['$scope', 'Note', 'Tweetable', function($scope, Note, Tweetable) { Note.all().success(function(data) { $scope.notes = data; }); $scope.tweetThatNote = function(noteToTweet) { Tweetable(noteToTweet).success(function(status) { console.log(status); }); }; }]);
Replace the existing call to Note.all()
with the correct call to the Note
Angular resource.
//before Note.all().success(function(data) { $scope.notes = data; }); //now $scope.notes = Note.query();
A Custom Method for Our Note $resource
Wouldn't it be great to have a custom method on our Note
resource to mark it as tweeted?
Add a tweetIt
method to the Note
resource. Remember, this updates an existing note, so use the correct HTTP method.
angular.module('NoteWrangler') .factory('Note',['$resource', function NoteFactory($resource) { return $resource('/notes', {}, { tweetIt : { method: 'PUT' } }); }]);
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具