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