在我的 Angular 应用程序中,我有一个服务,它存储一个配置结构,供我的应用程序的各个组件使用。在通过函数从文件.run
中guiConfigService
读取配置并能够通过函数返回某个组件的数据的阶段中:.json
setGuiConfig
getGuiConfig
myApp.factory("guiConfigService", ['$http', function($http) {
var guiConfig = {};
var self = {
setGuiConfig: function (callback) {
guiConfig = {"Functions" : {
"FunctionIds" : [
"3",
"5",
"10",
"last_entry"
]
}};
if (undefined !== callback) {
callback(guiConfig);
}
},
getGuiConfig: function (buzzword, callback) {
callback(guiConfig[buzzword]);
}
}
return self;
}]);
我的问题:
在我的组件的控制器中,我希望能够操纵从getGuiConfig
我的服务功能返回的任何内容,比方说,我想删除属性的最后一个条目FunctionIds
。这种操作不仅会影响我的控制器中的对象,还会操作guiConfig
我的服务中的 -Object。
function MyCtrl($scope, guiConfigService) {
var configData;
$scope.getNewGuiConfig = function() {
guiConfigService.getGuiConfig('Functions', function(data) {
configData = data;
// this does not only affect `configData`, but also the
// `guiConfig`-Object in guiConfigService:
configData.FunctionIds.splice(-1);
});
}
}
例如,请参阅此 JsFiddle。
我已经尝试过的:
- 首先我想,问题是我调用了一个回调函数而不是直接返回对象,但是我试过了,它似乎也不起作用。
- 发送我的服务
guiConfig
对象的副本JSON.parse(JSON.stringify(guiConfig[buzzword]))
是有效的,但在我看来这不是正确的做法。
有没有一种好方法可以从 service 中的对象返回数据,而不引用实际对象?