Javascript 重新编译AngularJS嵌套指令

Javascript 重新编译AngularJS嵌套指令,javascript,angularjs,Javascript,Angularjs,是否可以手动重新编译嵌套在另一个指令中的指令 我有一个modal create task指令,它是使用showcreatetaskmodel事件和一些数据初始化的。根据事件附带的数据,模式将更改其UI布局,并更改名为search projects的嵌套指令的行为 目前我遇到的问题是,我需要重新编译搜索指令,因为它需要启动showCreateTaskModal时传入的数据 这是模态模板的外观: <div class="ui modal" id="modalCreateTask" ng-con

是否可以手动重新编译嵌套在另一个指令中的指令

我有一个
modal create task
指令,它是使用
showcreatetaskmodel
事件和一些数据初始化的。根据事件附带的数据,模式将更改其UI布局,并更改名为
search projects
的嵌套指令的行为

目前我遇到的问题是,我需要重新编译
搜索指令
,因为它需要启动
showCreateTaskModal
时传入的数据

这是模态模板的外观:

<div class="ui modal" id="modalCreateTask" ng-controller="ModalCreateTaskCtrl">

    <search-projects oo-filter="{{ mode }}" oo-subject="searchProjectSubject"></search-projects>

</div>
编辑1:

根据要求,我会尽力更好地解释我在做什么

我有一个模式,其中包含另一个指令,该指令基于某些变量的内容,应该在属性更改时向服务器查询数据

我想重新编译指令,以便再次执行
init()
函数


在做一些研究时,我还注意到可以使用
$watch
,但我不知道这是否是一个好的解决方案。

根据活动中的数据,在“搜索项目”指令中附加一个“ng if”条件。因此,您的代码可能如下所示:

<div class="ui modal" id="modalCreateTask" ng-controller="ModalCreateTaskCtrl">

    <search-projects oo-filter="{{ mode }}" oo-subject="searchProjectSubject"
      ng-if="dataComingFromEvent"></search-projects>

</div>


当数据在“模型”即“dataComingFromEvent”中可用时,指令将再次放入DOM中,因此指令将被重新编译。

指令需要重新编译的情况非常罕见。这可能表明采用了错误的方法或设计

指令对数据作出反应。通常,数据通过属性、广播事件或与控制器的共享服务传递给指令。具体来说,隔离作用域使用单向和双向数据绑定将数据传递给指令

在没有其他触发器的情况下,可以
$watch
进行更改:

link: function(scope){
   scope.$watch("scopeVar", function(){
     // do something, like run init() again
   });
}
另一种选择是通过服务直接触发,类似于服务的工作方式。模态实例公开了一种方法,例如,从控制器关闭模态(指令):

modalInstance.close(result);

这个想法同样可以用于触发指令中使用相同服务的某些操作。

有重新编译的方法,但几乎不需要。你能更详细地解释一下(也许用一个说明性的例子)你想要实现什么吗?什么数据可用以及何时可用。为什么不能重新生成数据本身?@NewDev我在我的问题中添加了更多信息,所以现在应该更清楚了。您完全可以使用
$watch
对数据的更改做出反应。当然,这比重新编译要好,然后我会改变策略,转而使用
$watch
。如果你愿意,写下答案,我会标记并投票。对不起,你的解决方案部分有效。仅当属性未设置,然后再次设置时,才会重新编译该指令。如果属性的值发生更改,则不会重新编译元素。
modalInstance.close(result);