Dey*_*ang 7 javascript angularjs
我有以下功能,我想转换为服务.
我如何将$ resource调用提取到AngularJS服务中,我将如何调用此服务?
self.select = function (email) {
var Player = $resource('/player/get',{email:email});
var player = Player.get(function() {
self.selectedPlayer.email = player.email;
self.selectedPlayer.fuel = player.fuel;
self.selectedPlayer.cargo = player.cargo;
self.selectedPlayer.food = player.food;
});
}
Run Code Online (Sandbox Code Playgroud)
谢谢!
Pet*_* BD 18
我怀疑你正在使用0.9.19版本.我首先建议你转移到版本1.0rc4.版本1.0即将上线并且稳定,但它比版本0.9有许多重大变化.您可以查看Angular文档以获取更多信息.
在v1.0中,您将所有内容包装在一个模块中:控制器,服务,指令等.像这样创建一个模块:
var module = angular.module('ModuleName', ['ngResource']);
Run Code Online (Sandbox Code Playgroud)
在1.0版本中,资源服务被分解到它自己的类中,因此您必须将其作为依赖项.您还必须在应用中包含资源js文件.
现在要创建服务,您只需使用模块API即可.在这种情况下:
module.factory('Player', ['$resource', function($resource) {
return $resource('/player/get');}]);
Run Code Online (Sandbox Code Playgroud)
请注意,$ resource的依赖关系是由angular注入的.
就个人而言,我不喜欢弄乱我的服务范围,所以我会在我的控制器中有以下内容:
module.controller('MyController', ['$scope', 'Player', function($scope, Player) {
$scope.select = function(email) {
console.log("selecting");
Player.get({
email: email
}, function(player) {
$scope.selectedPlayer = player;
});
};
}]);?
Run Code Online (Sandbox Code Playgroud)
请注意,在v1.0中,范围也会注入控制器,因此不再使用self.此外,我冒昧地假设selectedPlayer只包含播放器中的字段,所以我只是将玩家直接写在selectedPlayer的顶部.您也可以手动angular.extend($scope.selectedPlayer, player);逐字域或使用合并两个对象.
这是一个小提琴:http://jsfiddle.net/DukvU/
Mis*_*ery 11
angular.module('myModule', []).
factory('Player', function($resource) {
return $resource('/player/get',{email:email});
});
function MyController($scope, Player) {
$scope.select = function(email) {
Player.get(....);
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8882 次 |
| 最近记录: |