2014-10-03 39 views
0

我剛剛開始使用AngularJS,並且我想將它集成到現有的ASP.NET MVC應用程序中。如何在ASP.NET MVC中使用AngularJS ajax加載彈出框

我創建簡單的HelloWorld角的應用程序,我返回由一個控制器動作變得簡單的觀點:

<div ng-app="HelloNg"> 
    <h1> Hello {{1+1}} you</h1> 
</div> 

這個偉大的工作 - 我能看到的角度表達正確的評估。

但是,在我們的應用程序中,數據通常以ajax加載的彈出窗口顯示。所以基本上,JavaScript向MVC控制器發出請求,視圖被渲染並被髮回。然後JavaScript將其填充到準備好的div中,並將該div顯示爲彈出窗口。

在這種情況下,角度表達式不會被處理,並且{{1 + 1}}逐字呈現在屏幕上。承載彈出窗口的主頁面是標準的ASP.NET頁面 - 它根本不使用角度,但它會導入角度腳本。

從我的理解我應該使用angular $ compile服務讓角度知道它 - 但我不知道如何設置$ scope變量。

有人能指出我正確的方向嗎?在大多數示例中,我可以看到在角度控制器或指令中使用$ compile服務,但在我的情況下,我正在嘗試從角度世界以外的角度來完成。

主頁面很大,我不想在這一點上將它轉換爲角度 - 所以彈出使用角度只會對我很好。

回答

0

找到了一些相關的問題,特別是this one後,我能弄明白:

// Here data is HTML returned from ajax 

angular.injector(['ng']).invoke(['$compile', '$rootScope', 
    function (compile, rootScope) { 
    var scope = rootScope.$new(); 
    var result = compile(data)(scope);    
    scope.$apply();    
    data = result; 

    // Here data is same HTML but now it is recognized by angular 
    ... render it to page here ... 
    } 
]); 

它可能可以做到更好,但是這似乎爲我所有的工作 - 所有角的標記進行處理時,彈出窗口顯示 - 並且所有綁定似乎也可以工作。