1

我想$compile一段包含幾個指令的html到一個字符串併發送給服務器。由於某些指令包含templateUrl,所以返回的鏈接函數被延遲。在這個問題中(AngularJS: Using $compile on html that contains directives with templateurl)這個問題似乎解決了,呼籲$scope.$digest()這在我的情況下是不可能的(已經在進行中)。用templateUrl編譯指令到字符串並等待延遲的鏈接功能

我發現的唯一的解決辦法,是使用超時,請參閱http://plnkr.co/edit/k3ZAYy1FhGUFXxXyrPvB?p=preview

有沒有更好的方式來等待延遲鏈接功能的完成?

在runURL功能

回答

0

,使用$應用,如:

this.runUrl = function() { 
    var scope = $rootScope.$new(); 
    var html = '<template-url-directive></template-url-directive>'; 
    var compiled = $compile(html); 
    var el = compiled(scope); 
    scope.$apply(); 
    this.result = el[0].outerHTML; 
    }; 

,致力於與模板範圍綁定。請檢查編輯的plunk.

+0

我得到'錯誤:[$ rootScope:inprog] $ apply already progress in progress'。我認爲它的工作原理只是因爲apply()中的錯誤需要足夠的時間來加載模板。 – hansmaad

+0

我編輯過你的重拳,請檢查它的新叉。 –

+0

你的摔跤叉同樣的錯誤。 – hansmaad