2014-06-16 5 views
0

모듈 A에 ServiceA()가 있고 html에 변수 항목이 사용되었습니다.angularjs .service()로 상속

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 : 내가, 내가 기지로 moduleA에 serviceA()를 만들고 싶어) (AngularJS와 .service를 사용하여 상속을 달성하기 위해 노력하고

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

serviceB()를 moduleB에 작성하면 기본 서비스 (serviceA())를 상속하고 serviceA()에서 변수 'item'을 업데이트해야합니다.

컨트롤러 코드와 html 코드는 동일하게 유지됩니다.

가능합니까? 이것은 좋은 접근 방법입니까? angularjs .service()를 사용하여 상속/추상화를 달성 할 수 있습니까? 당신이 모듈을 정의 할 때마다

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

사실 당신은 그러나 당신은 serviceA의 모듈 의존성 모듈로 주입해야 할 수 있습니다.angular.module ('ModuleB', [ 'ModuleA']). service ("serviceB", function (serviceA) ... – Tek

답변

0
  1. , 당신은 빈 배열 또는 두 번째 인수로 종속성을 통과해야한다. 즉 angular.module("ModuleA", []) 또는 angular.module("ModuleA", ['someDependent'])입니다.
  2. 서비스가 하나의 모듈에 있지만 컨트롤러는 다른 모듈에 있습니다. 따라서 그들 사이에 관계를 생성해야합니다 angular.module("ModuleX", ["ModuleA"]).
  3. 서비스에서 아무것도 반환하지 않고 잘못된 방법으로 작성했습니다.

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); 
}); 
관련 문제