服务与工厂的混淆

服务与工厂的混淆

据我所知,当我在工厂内返回一个被注入控制器的对象时。在服务内部处理对象时,我将使用this什么都不回。

我以为服务是总是单身,而那个新工厂对象每个控制器都会被注射。然而,事实证明,工厂对象也是单例吗?

演示示例代码:

var factories = angular.module('app.factories', []);var app = angular.module('app',  ['ngResource', 'app.factories']);
factories.factory('User', function () {
  return {
    first: 'John',
    last: 'Doe'
  };});app.controller('ACtrl', function($scope, User) {
  $scope.user = User;});app.controller('BCtrl', function($scope, User) {
  $scope.user = User;});

变时user.first在……里面ACtrl结果证明user.first在……里面BCtrl也发生了变化。User是单身人士吗?

我的假设是在一个工厂的控制器中注入了一个新的实例?


一只斗牛犬
浏览 478回答 3
3回答

手掌心

对我来说,当我意识到他们的工作方式是一样的:通过运行一些东西时,启示就来了。一次,将他们得到的价值存储起来,然后咳嗽起来。相同的存储值当通过依赖注入引用时。假设我们有:app.factory('a', fn);app.service('b', fn);app.provider('c', fn);三者的区别在于:a存储的值来自运行fn,换言之:fn()b的存储值来自new英fn,换言之:new fn()c的存储值来自于new英fn,然后运行一个$get实例的方法这意味着,在角内有类似于缓存对象的东西,每个注入的值只分配一次,当它们第一次被注入时,并且:cache.a = fn()cache.b = new fn()cache.c = (new fn()).$get()这就是为什么我们用this在服务中,并定义this.$get在提供者那里。希望这能帮上忙。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

AngularJS