您可以将工厂注入到模块的.run
函数中:
myApp.factory('Hello', function () {
var data;
return {
getData: function () {
return data;
},
setData: function (val) {
data = val;
}
};
});
myApp.run(function (Hello) {
Hello.setData(2);
});
这是一个小提琴:http: //jsfiddle.net/xph8n/
或者这里有一个似乎更接近您需求的解决方案。它使用更通用的提供程序,该提供程序返回一个getData()
函数,同时保持私有setData()
。.config
然后可以使用传入的关联提供程序调用私有函数:
myApp.provider('Hello', function () {
this.data = 0;
this.$get = function () {
var data = this.data;
return {
getData: function () {
return data;
}
}
};
this.setData = function (data) {
this.data = data;
};
});
myApp.config(function (HelloProvider) {
HelloProvider.setData(1);
});
这个小提琴:http: //jsfiddle.net/xph8n/3/