Javascript 如何';摧毁';AngularJS的指令?
我使用一个指令来分隔实体(例如,一个人)的逻辑 因此,我有一个人员服务,它存储了一系列人员,如:Javascript 如何';摧毁';AngularJS的指令?,javascript,angularjs,angularjs-directive,Javascript,Angularjs,Angularjs Directive,我使用一个指令来分隔实体(例如,一个人)的逻辑 因此,我有一个人员服务,它存储了一系列人员,如: this.people = ["Person 1", "Person 2", "etc"]; 然后控制器注入该服务,并将数据发送到包含my指令的模板。因此,我的模板类似于: <div ng-repeat="person in people"> <person name="person"></person> </div> 问题是,指令模板的其
this.people = ["Person 1", "Person 2", "etc"];
然后控制器注入该服务,并将数据发送到包含my指令的模板。因此,我的模板类似于:
<div ng-repeat="person in people">
<person name="person"></person>
</div>
问题是,指令模板的其余部分保持不变。我想删除后完全删除该指令。这怎么可能?我尝试使用ng hide将其隐藏起来,并在删除时将指令范围中的“deleted”属性设置为true,但空(无数据)指令模板仍然存在。我已经研究了作用域。$destroy()、element.remove()等,但没有任何效果,文档中也没有任何内容看起来非常清晰
如何从指令本身(即调用delete函数)完全销毁/删除指令
小提琴:
单击“删除”,数据将消失,但指令(和模板)仍保留,显示“名称:”。如何在删除时完全删除该指令?您正在删除对象,但数组中仍保留空元素,它只是空引用,而不是指向现有对象 使用 将其从数组中移除,该元素将不再在for循环中渲染
参考:
ng repeat
控制它内部的渲染内容,删除它所迭代的内容数组中的项并调用范围。$apply()
应使ng repeat
删除dom元素。您可以显示您的指令或简化JSFIDLE吗?它说已经有一个$apply()正在进行中。。。给我5分钟,我会做一个快速的提琴。@user1066946-这里的提琴示例:(单击delete,指令模板保持不变..我想完全删除指令)当你发布它的时候,我自己就明白了(添加了{{people}和{{peopleIds}查看模板,发现数组仍然包含两个空值。谢谢!在这方面浪费了很多时间:(
delete People.people[id];
this.peopleIds.splice(this.peopleIds.indexOf(personId), 1);