2014-09-15 2 views
1

나는 제공자에 대해 약간의 의문이있다. 컨트롤러에서 "setText"공급자 기능에 액세스 할 수없는 이유를 설명 할 수 있습니까? $ get 블록 안에있는 함수에만 접근 할 수 있습니다.

var myMod = angular.module('myApp', []); 

myMod.controller("mainCtrl", [ "$scope","greeting", function($scope, greeting){ 
    greetingProvider.setText("Hi, "); 
}]); 

myMod.provider('greeting', function() { 
    var text = 'Hello, '; 

    this.setText = function(value) { 
    text = value; 
    }; 

    this.$get = function() { 
    return function(name) { 
     console.log(text + name); 
    }; 
    }; 
}); 

myMod.config(function(greetingProvider) { 
    greetingProvider.setText("Howdy there, "); 
}); 

myMod.run(function(greeting) { 
    greeting('Ford Prefect'); 
}); 

감사

답변

0

공급자는 응용 프로그램 수명주기의 구성 단계에서 액세스 할 수 있습니다 더 자세한 답변을

은이 문서를 확인하십시오. 그들의 구체적인 목적은 미래의 서비스를 구성하는 방법을 제공하는 것이며, 제공자는 this.$get 메소드를 통해 리턴해야합니다.

귀하의 경우에는 제공자가 필요하다고 느끼지 않습니다. 간단한 서비스 (공장)가 충분했을 것입니다. 또는 공장을 이용하고 set 방법을 추가하여 text 변수를 변경하여 폐쇄에 저장할 수 있습니다.

관련 문제