具有隔离作用域的AngularJs服务
在我的Angular应用程序中,我有一个存储配置结构的服务,它由我的应用程序的各个组件使用。在具有隔离作用域的AngularJs服务,angularjs,data-binding,angular-services,isolate-scope,one-time-binding,Angularjs,Data Binding,Angular Services,Isolate Scope,One Time Binding,在我的Angular应用程序中,我有一个存储配置结构的服务,它由我的应用程序的各个组件使用。在.run-阶段,guiConfigService通过函数setGuiConfig读取.json文件中的配置,并能够通过函数getGuiConfig返回特定组件的数据: myApp.factory("guiConfigService", ['$http', function($http) { var guiConfig = {}; var self = { setGuiConf
.run
-阶段,guiConfigService
通过函数setGuiConfig
读取.json
文件中的配置,并能够通过函数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
的最后一个条目。此操作不仅影响我的cotroller中的对象,还操作我的服务中的guiConfig
-对象
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);
});
}
}
例如,见
我已经尝试过的:
- 首先我想,问题是我调用了一个回调函数而没有直接返回对象,但是我尝试了,它似乎也不起作用
- 通过
发送我的服务的JSON.parse(JSON.stringify(guiConfig[buzzword])
对象的副本是可行的,但在我看来这不是正确的方法guiConfig
您可以在回调函数中使用angular.copy()。控制器中配置的常用代码是~:config=angular.extend(ctrl.config | |{},service.getNewGuiConfig());由于服务在多个组件中使用,我认为让服务制作副本比让控制器制作副本更有意义。否则,谢谢!
function MyCtrl($scope, guiConfigService) {
var configData;
$scope.getNewGuiConfig = function() {
guiConfigService.getGuiConfig('Functions', function(data) {
configData = angular.copy(data);
configData.FunctionIds.splice(-1);
});
}
}