以编程方式加载视图/控制器

时间:2016-04-13 09:56:44

标签: angularjs

如何在运行时加载视图/控制器?

比方说,我有一个像这样的内容列表

ctrl.pages = [{
  controller:"myController",
  templateUrl : "/app/view.html"
},{
  controller:"myController2",
  templateUrl : "/app/view2.html"
}]

如何加载这些视图和控制器?它只是一个使用“ng-include”的情况还是有更好的方法?像Angular Material这样的图书馆似乎没有这样做。

<ng-include ng-repeat="page in ctrl.pages" 
            ng-controller="{{page.controller}}"
            src="{{page.templateUrl }}"></ng-include>

2 个答案:

答案 0 :(得分:1)

这似乎是模板扩展指令的一种情况,请参阅Angular文档here。或者,如果这些页面代表应用程序的不同“状态”,用户可能直接通过URL访问,则它们是ui-router的良好候选者。

答案 1 :(得分:1)

检查此plnk

我添加了select个可用视图,并根据选择ng-include src进行了更新。

我避免故意初始化controller(s),您可以包括它们。