相关疑难解决方法(0)

AngularJS中的模块和命名空间/名称冲突

考虑以下jfiddle http://jsfiddle.net/bchapman26/9uUBU/29/

//angular.js example for factory vs service
var app = angular.module('myApp', ['module1', 'module2']);

var service1module = angular.module('module1', []);

service1module.factory('myService', function() {
    return {
        sayHello: function(text) {
            return "Service1 says \"Hello " + text + "\"";
        },
        sayGoodbye: function(text) {
            return "Service1 says \"Goodbye " + text + "\"";
        }
    };
});

var service2module = angular.module('module2', []);

service2module.factory('myService', function() {
    return {
        sayHello: function(text) {
            return "Service2 says \"Hello " + text + "\"";
        },
        sayGoodbye: function(text) {
            return "Service2 …
Run Code Online (Sandbox Code Playgroud)

namespaces collision angularjs angularjs-module

49
推荐指数
1
解决办法
2万
查看次数

如何使用不同模块中具有相同名称的两个AngularJS服务?

假设我有两个AngularJS模块,例如foobar,它们都定义了一个名为的服务baz.

在我的申请中,我依靠他们说:

var app = angular.module('app', [ 'foo', 'bar' ]);
Run Code Online (Sandbox Code Playgroud)

然后我可以尝试使用baz控制器中的服务

app.controller('blaController', [ '$scope', 'baz', function($scope, baz) {
  // ...
}]);
Run Code Online (Sandbox Code Playgroud)

如何定义我想要使用的两种服务中的哪一种?有没有像完全合格的名字?

angularjs angularjs-service angularjs-module

27
推荐指数
1
解决办法
1万
查看次数

在同一模块中多次声明AngularJS服务

我正在使用AngularJS 1.x,我可以在同一个模块中多次定义相同的服务.在下面的代码片段中,我nameService在模块中定义了2次服务myApp:

(function() {
  'use strict';

  angular
    .module('myApp', [])
    .controller('MainController', MainController)
    .factory('nameService', nameService1)
    .factory('nameService', nameService2);

  MainController.$inject = ['nameService'];

  function MainController(nameService) {
    var vm = this;

    vm.message = nameService.getName();
  }

  function nameService1() {
    return {
      getName: getName
    };

    function getName() {
      return 'First Definition';
    }
  }

  function nameService2() {
    return {
      getName: getName
    };

    function getName() {
      return 'Second Definition';
    }
  }
})();
Run Code Online (Sandbox Code Playgroud)

在运行时,AngularJS将使用服务的第二个实现返回的值:"Second Definition".请查看此Plunker示例.

因此,根据经验,AngularJS似乎始终使用服务的最新定义,而忽略了之前的定义.

我的问题是:有没有描述这种行为的官方文件?

javascript angularjs

9
推荐指数
1
解决办法
582
查看次数

覆盖AngularJs服务

我正在制作一个AngularJs模块.问题是,这个模块假设与其他模块(它就像一个插件)一起工作.所以我基本上会从另一个模块导入这个模块.但是,这个模块中有一些服务,我想稍后从导入该模块的模块中覆盖它.我该怎么办?只是定义另一个具有相同名称的服务吗?如果是这样,我将如何获得原始服务?

javascript angularjs

6
推荐指数
1
解决办法
5557
查看次数