当 angularjs 中的路由更改时,如何让服务器定义视图和可选的控制器



我不想使用 $routeProvider 配置以正常方式对视图和控制器进行硬编码。

基本上,我想订阅路由更改事件,在提供当前路由的服务器上调用一些逻辑,并获取以json(作为承诺(返回的适当视图/控制器,然后将其编译/显示在应用程序的主要部分中。

这似乎是一个微不足道的问题,但我还没有找到解决方案。

我尝试用 ng-include 替换 ng-view,但我无法动态更改其上的 ng 控制器。

我尝试创建一个自定义指令,如果提供,可以选择将 ng-include 包装在带有 ng-controller 的div 中,但由于它在模板函数内执行,我无法解析控制器名称,因为模板函数无法访问范围

如果有人能给我指路,将不胜感激。

我最终在我的控制器中这样做了,这似乎有效:

function loadPage(page) {
var container = $("#main");
var element = $("<div>");
var scope = $rootScope.$new();
server.loadViewTemplate(page.view).then(function(template) {
element.html(template);
container.html(element);
if (page.controller) {
var templateController = $controller(page.controller, { $scope: scope });
element.children().data('$ngControllerController', templateController);
}
$compile(element)(scope);
});

}

最新更新