是否可以手動重新編譯嵌套在另一個指令內的指令?重新編譯AngularJS嵌套指令
我有一個modal-create-task
指令,它使用showCreateTaskModal
事件和一些數據一起初始化。根據隨事件發佈的數據,模式會更改其UI佈局,並會更改名爲search-projects
的嵌套指令的行爲。
我現在遇到的問題是,我需要重新編譯search-directive
,因爲它需要與showCreateTaskModal
進來的數據被解僱。
這是模態模板的樣子:
<div class="ui modal" id="modalCreateTask" ng-controller="ModalCreateTaskCtrl">
<search-projects oo-filter="{{ mode }}" oo-subject="searchProjectSubject"></search-projects>
</div>
正如你可以看到兩個oo-filter
和oo-subject
屬性取決於連接到showCreateTaskModal
事件的數據,但該事件時,編譯器後,僅啓動通過DOM,然後該指令無法訪問所需的數據,因此它回退到默認行爲。
這是search-projects
定義:
angular.module('app.ui.search.projects').directive('searchProjects', function(ConfigService)
{
return {
restrict : 'E',
templateUrl : ConfigService.path.views + '/search/projects.html',
scope : {
filter : '@ooFilter',
subject : '=ooSubject'
}
}
});
編輯1:
根據要求,我會試着更好地解釋我在做什麼。
我有一個模式,包含另一個指令,基於某些變量的內容,應該查詢服務器的數據,每當屬性發生變化。
我想重新編譯指令,以便再次執行init()
函數。
做一些研究我也注意到有可能使用$watch
但我不知道這是否是一個好的解決方案。
有許多方法可以重新編譯,但幾乎不需要。你能否更詳細地解釋一下(可能是用一個說明性的例子)你試圖達到什麼目的?什麼數據可用,何時。爲什麼數據本身不能重新生成? – 2015-02-24 14:23:14
@NewDev我在我的問題中增加了更多信息,所以現在應該更清楚了。 – siannone 2015-02-24 16:03:06
你絕對可以使用'$ watch'來對數據的變化作出反應。好於重新編譯,肯定是 – 2015-02-24 16:06:00