2016-02-29 29 views
0

我想製作一個單獨的頁面應用程序,我想通過ajax加載屏幕(局部視圖)。問題是用戶想要多次打開同一個屏幕(在選項卡中)。我嘗試在初始加載時加載控制器代碼,並通過AJAX加載我的屏幕(部分視圖)。但是在加載屏幕(局部視圖)時控制器已經執行。如何在頁面上多次使用相同的控制器和相同的視圖

我想知道如何讓控制器在部分視圖加載後運行?

或者更好的是,如何處理這種情況,我想用不同的數據/狀態多次加載相同的視圖?

+0

你不使用指令/組件的任何原因? – Jacob

+0

你能否解釋一下這將如何幫助?我想根據需求加載部分視圖,並且可以多次顯示相同的視圖。此外,局部視圖還包含網格,圖表和表單。 –

回答

0

我找到了解決我遇到的問題的解決方案。我不確定這是否是繼續前進的最佳方式,但鑑於迄今爲止我對AngularJS的知識有限,該解決方案是我最好的選擇。如果任何人都可以想出更好的解決方案,那麼我都是耳朵。

不是先註冊控制器,而是在請求視圖時註冊控制器。

此外,我正在追加一個新的div到我希望視圖出現的容器。頁面上有一些隱藏其他視圖的jQuery,只顯示當前視圖。

步驟1

分配$controllerProvider.register到在App範圍可變

var myApp = angular.module("myApp", []); 
angular.module("myApp").config(function ($controllerProvider) { 
        myApp.registerCtrl = $controllerProvider.register; 
       }); 

步驟2

在我有動態加載該視圖的功能,我做的以下

$("#viewContainer").append($compile('<div ng-include="pageUrl"></div>')($scope)); 

上面的行增加了一個帶有ng-include指令的div。它也編譯指令。 pageUrl是我保持網址到我想要包含的視圖。

步驟3

在我必須加載視圖文件,我已經包括保持我的控制器JavaScript文件。文件的其餘部分包含帶指令的簡單HTML。在JS文件,而不是創建控制器,我正在註冊控制器,如

angular.module('myApp').registerCtrl("MyController", MyController); 

我希望這有助於他人。

相關問題