与angularjs .service()继承

时间:2014-06-16 05:58:48

标签: javascript angularjs inheritance

我在模块A中有一个ServiceA(),而在html中使用了变量项。

angular.module("ModuleA").service("ServiceA", function () {
  var item=[];
  this.get(){
    item.push("A");
  }
});

Controller.js

angular.module("ModuleX").controller("Ctrl", function (ServiceA) {
   $scope.service=ServiceA;
});

HTML:

 <h1>{{service.item}}
 </h1>

我正在尝试使用angularjs .service()实现继承,我想在moduleA中将serviceA()作为基本服务并在moduleB中创建服务serviceB(),这应该继承基本服务(serviceA())并更新变量&#39; item&#39;在serviceA()。

控制器代码和HTML代码保持不变。

有可能吗?这是一个好方法吗?我们可以使用angularjs .service()来实现继承/抽象吗?

angular.module("ModuleB").service("serviceB", function (serviceA) {
  serviceA.item="B";
});

1 个答案:

答案 0 :(得分:0)

  1. 无论何时定义模块,都应该传递一个空数组或 依赖关系作为第二个参数。即angular.module("ModuleA", [])angular.module("ModuleA", ['someDependent'])
  2. 服务在一个模块中,而控制器在另一个模块中。因此,您需要在它们之间创建关系angular.module("ModuleX", ["ModuleA"])
  3. 您没有从服务中返回任何内容,并且您以错误的方式编写了该方法。
  4. <强> Plnkr

    工作代码

    angular.module("ModuleA", []).service("ServiceA", function () {
      var item=[];
      this.get = function(){
        item.push("A");
        return item;
      }
    });
    
    angular.module("ModuleX", ["ModuleA"]).controller("Ctrl", function ($scope, ServiceA) {
       $scope.service = ServiceA.get();
       console.log($scope);
    });