我正在使用指令来分隔实体的逻辑(例如,某个人)。
所以我有一个人员服务,存储一系列的人,如:
this.people = ["Person 1", "Person 2", "etc"];
然后,控制器注入该服务,并将数据发送到包含我的指令的模板。所以我的模板看起来像:
<div ng-repeat="person in people">
<person name="person"></person>
</div>
现在,在我的指令中,我有一个删除函数(通过单击指令模板中的按钮来调用,看起来像这样(人员服务也注入指令):
delete People.people[id];
问题是,我的指令模板的其余部分保持不变。我想在删除时完全删除该指令。这怎么可能?我尝试使用ng-hide隐藏它,并在删除时将指令范围中的'deleted'属性设置为true,但保留空(无数据)指令模板。我已经调查了范围。$ destroy(),element.remove()等,但没有任何工作,文档中似乎没有任何内容......
如何从内部完全销毁/删除指令(即在调用删除函数时)?
小提琴:http://jsfiddle.net/VSph2/107/
单击“删除”,数据消失,但指令(和模板)仍然显示,显示“name:”。如何在删除时完全删除指令?
答案 0 :(得分:2)
您正在删除对象,但数组中的空元素仍然存在,它只是空引用而不是指向现有对象。
使用
this.peopleIds.splice(this.peopleIds.indexOf(personId), 1);
将其从数组中删除,该元素将不再在for循环中呈现。
参考:How do I remove a particular element from an array in JavaScript?