Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何';摧毁';AngularJS的指令?_Javascript_Angularjs_Angularjs Directive - Fatal编程技术网

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);