2016-02-29 184 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); 

我希望这有助于他人。

相关问题