请在这里忍受我.我知道还有其他答案,例如: AngularJS:Service vs provider vs factory
但是,当你在工厂使用服务时,我仍然无法弄清楚.
据我所知,工厂通常用于创建可由多个控制器调用的"通用"功能:创建通用控制器功能
Angular文档似乎更喜欢工厂而不是服务.他们甚至在使用工厂时提到"服务",这更令人困惑!http://docs.angularjs.org/guide/dev_guide.services.creating_services
那么什么时候才能使用服务?
是否有可能通过服务完成或更容易完成的事情?
幕后有什么不同吗?性能/内存差异?
这是一个例子.除了声明的方法,它们看起来完全相同,我无法弄清楚为什么我会做一个与另一个.http://jsfiddle.net/uEpkE/
更新:从托马斯的回答看来,似乎暗示服务是为了更简单的逻辑和工厂用于更复杂的逻辑与私有方法,所以我更新了下面的小提琴代码,似乎两者都能够支持私人功能?
myApp.factory('fooFactory', function() {
var fooVar;
var addHi = function(foo){ fooVar = 'Hi '+foo; }
return {
setFoobar: function(foo){
addHi(foo);
},
getFoobar:function(){
return fooVar;
}
};
});
myApp.service('fooService', function() {
var fooVar;
var addHi = function(foo){ fooVar = 'Hi '+foo;}
this.setFoobar = function(foo){
addHi(foo);
}
this.getFoobar = function(){
return fooVar;
}
});
function MyCtrl($scope, fooService, fooFactory) {
fooFactory.setFoobar("fooFactory");
fooService.setFoobar("fooService");
//foobars = "Hi fooFactory, …Run Code Online (Sandbox Code Playgroud) 我正在尝试学习HTML5/Node.js/Express/MongoDB/AngularJS/Websocket这个似乎让大家现在兴奋的事情.
作为一个轻微的适得其反,我实际上很难在每种技术实际上做些什么(特别是将ejs作为模板引擎).到处都是Javascript和HTML!
特别是,我在分离websockets(或类似socket.io)和AngularJS提供的服务时遇到了麻烦.他们似乎都试图提供动力而不必重新发送整个HTML页面.
他们互相替代吗?或者他们服务于不同的目的?
此外,这两种技术似乎都转向绕过Express'路由的单页Web应用程序.那么,当使用Websockets/AngularJS时,Express会利用什么?看起来像Express提供的传统路由取代了只改变AngularJS中单页的视图
我有几个控制器.在其中一个中,我需要打开Web套接字连接.在另一个我需要监听消息,如果需要更新$ scope.请帮助我在下面的示例中执行此操作:
app.controller('MainCtrl', ['$scope', function($scope) {
$scope.testProp = {};
$scope.testProp2 = '';
// listen messages here
// and update $scope.testProp && $scope.testProp2
}]);
app.controller('SearchCtrl', ['$scope', function($scope) {
// open connection here
}]);
Run Code Online (Sandbox Code Playgroud)
PS我明白这个问题很简单,但我是AngularJS和WebSockets的新手,我需要帮助,现在我没有时间学习文档(后面我会做什么)