我有一个服务“MyService”,其中包含以下内容:
this.myobj = {'dog': 'bark', 'cat': 'meow'}
我将此服务注入(inject)到指令中。在指令链接函数中,我有一个 $scope.$destroy 执行以下操作:
console.log(MyService.myobj);
delete MyService.myobj.dog;
console.log(MyService.myobj);
删除后console.log输出仍然显示为:
{'dog': 'bark', 'cat': 'meow'}
即使我在“狗”键上调用了删除。 到底是怎么回事?有没有更合适的方法来删除 key ?
最佳答案
向服务添加一个删除其属性的方法:
var myObj = {
dog: 'bark',
cat: 'meow',
delKey: function (keyName) {
delete this[keyName];
}
}
然后调用方法:
MyService.myobj.delKey('dog');
如果您希望为该服务分配一个可以对该服务中的任何对象进行操作的方法:
myObj: {
dog: 'bark',
cat: 'meow'
},
delKey: function (obj, key) {
delete this[obj][key];
}
你可以查看这个plnkr:
关于angularjs - Angular 删除服务?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29528053/