我有一项服务" MyService"包含以下内容:
this.myobj = {'dog': 'bark', 'cat': 'meow'}
我将此服务注入指令。在指令链接函数中,我有一个$ scope。$ destroy执行以下操作:
console.log(MyService.myobj);
delete MyService.myobj.dog;
console.log(MyService.myobj);
console.log输出看起来像删除后仍然显示为:
{'dog': 'bark', 'cat': 'meow'}
即使我在“狗”上打电话删除了“#”。键。 到底是怎么回事?有没有更合适的方法来删除密钥?
答案 0 :(得分:3)
向服务添加删除其属性的方法:
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: