gpt4 book ai didi

angularjs - 为什么这个具有可变对象名称的 AngularJs 服务返回一个 undefined object ?

转载 作者:行者123 更新时间:2023-12-03 08:09:03 25 4
gpt4 key购买 nike

场景:

我想使用此服务来共享我的 webApp 中的一些属性。该服务内部应该有一些对象,并且 Controller 应该能够获取和设置这些对象。

JS:

var oneApp = angular.module('myApp', ['ui.bootstrap', 'ngTouch', 'ngAnimate'])
.service('sharedProps', function() {
var anObjNameDest = '';
var anObjPropName = '';

this.progressBarDynTyped00 = {
dynamic: 0,
dynMultiplier: 10,
max: 100
};

var progressBarDynTyped00 = {
dynamic: 1000,
dynMultiplier: 10010,
max: 100100
};


var test = this.progressBarDynTyped00;

var test2 = progressBarDynTyped00;

return {
getDynObject: function(anObjNameDest) {
return this[anObjNameDest];
},
getDynObjectVal: function(anObjNameDest, anObjPropName) {
return this[anObjNameDest][anObjPropName];
},
setDynObjectVal: function(anObjNameDest, anObjPropName, value) {
this[anObjNameDest][anObjPropName] = value;
},
setDynObject: function(anObjNameDest, ObjSrc) {
this[anObjNameDest] = ObjSrc;
}
}
});


oneApp.directive("progressBarDynTyped", function() {
return {
restrict: "E",
templateUrl: "aTemplateUrl.html",
controller: function(sharedProps) {

this.test = sharedProps.getDynObject('progressBarDynTyped00');

this.dynMultiplier
= sharedProps.getDynObjectVal('progressBarDynTyped00', 'dynMultiplier');
},
controllerAs: "progressBarDynTyped00"
};

});

问题:

在上面的代码中,我有一个服务,其中有两个测试对象(以前只有一个,第二个是为了测试目的而添加的),这些测试对象应该从这个服务返回到一些 Controller 函数,就像在“progressBarDynTyped00” Controller 中一样,因为我需要在这些对象中获取和设置一些值。

从服务调用所有重新调整的函数总是给我一个 undefined object 或“无法读取未定义的属性‘dynMultiplier’”。

问题:

有没有办法返回一个动态对象,将对象的名称传递给服务函数?

感谢大家。

最佳答案

我认为您对在 Angular 中创建服务的两种方式感到困惑:使用 service 关键字和 factory 关键字

对于 service 关键字,应该通过将其分配给此来使公共(public)功能可用:

angular.module('myApp', ['ui.bootstrap', 'ngTouch', 'ngAnimate']).service('sharedProps', function () {

this.getDynObject = function (anObjNameDest) {
//...
};

}]);

而且它不期望有返回值。所以对于上面的代码,没有要调用的公共(public)函数,这就解释了错误

关于angularjs - 为什么这个具有可变对象名称的 AngularJs 服务返回一个 undefined object ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32627017/

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