我想制作一个单独的页面应用程序,我想通过ajax加载屏幕(局部视图)。问题是用户想要多次打开同一个屏幕(在选项卡中)。我尝试在初始加载时加载控制器代码,并通过AJAX加载我的屏幕(部分视图)。但是在加载屏幕(局部视图)时控制器已经执行。如何在页面上多次使用相同的控制器和相同的视图
我想知道如何让控制器在部分视图加载后运行?
或者更好的是,如何处理这种情况,我想用不同的数据/状态多次加载相同的视图?
我想制作一个单独的页面应用程序,我想通过ajax加载屏幕(局部视图)。问题是用户想要多次打开同一个屏幕(在选项卡中)。我尝试在初始加载时加载控制器代码,并通过AJAX加载我的屏幕(部分视图)。但是在加载屏幕(局部视图)时控制器已经执行。如何在页面上多次使用相同的控制器和相同的视图
我想知道如何让控制器在部分视图加载后运行?
或者更好的是,如何处理这种情况,我想用不同的数据/状态多次加载相同的视图?
我找到了解决我遇到的问题的解决方案。我不确定这是否是继续前进的最佳方式,但鉴于迄今为止我对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);
我希望这有助于他人。
你不使用指令/组件的任何原因? – Jacob
你能否解释一下这将如何帮助?我想根据需求加载部分视图,并且可以多次显示相同的视图。此外,局部视图还包含网格,图表和表单。 –