gpt4 book ai didi

angularjs - 在其 run() 方法中访问工厂的变量

转载 作者:行者123 更新时间:2023-12-02 21:43:32 24 4
gpt4 key购买 nike

如何从工厂的 run 方法中访问变量?

(function()
{
'use strict';

angular.module('services',[])
.factory('Hello',function()
{
var data;
})
.run(function()
{
//Get access to data var here
});
}());

这可能是不可能的,我必须将 var data; 移动到工厂函数之外,对吗? (例如http://plnkr.co/edit/1sHvg0oy0Y6o20SKrTnb)

最佳答案

您可以将工厂注入(inject)到模块的 .run 函数中:

myApp.factory('Hello', function () {
var data;
return {
getData: function () {
return data;
},
setData: function (val) {
data = val;
}
};
});
myApp.run(function (Hello) {
Hello.setData(2);
});

这是一个 fiddle :http://jsfiddle.net/xph8n/

或者这里有一个似乎更接近您的需求的解决方案。它使用更通用的提供程序,该提供程序返回 getData() 函数,同时保留私有(private) setData() 函数。然后可以使用 .config 调用私有(private)函数,并传入关联的提供程序:

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);
});

fiddle :http://jsfiddle.net/xph8n/3/

关于angularjs - 在其 run() 方法中访问工厂的变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19933196/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com