Angular中的同一视图多个控制器

Same view multiple controllers in Angular

本文关键字:控制器 视图 Angular      更新时间:2023-09-26

我使用ng table指令来显示带有数据的表。

我目前使用该表的观点是:

<table ng-table="table_params" show-filter="true" ng-controller="table">
...
</table>

我还有几个页面需要显示同一个表(只有不同的数据)。因此,对我来说,合乎逻辑的事情似乎是使用一个视图但不同的控制器来用不同的数据填充表。我不确定Angular的方法是什么以及如何做到这一点。

我使用angular-route通过ng-view指令进行路由

在您的情况下,不要将ng控制器放在html中,而是放在js(即app.js)中

.when('/table', {
  templateUrl: 'views/table.html',
  controller: 'tableCtrl'
})
.when('/yetanothertable', {
  templateUrl: 'views/table.html',
  controller: 'yetanothertableCtrl'
})

如果您想用另一个控制器创建一个单独的部分,请将其放在一个独立的html中,并使用ng-include。在您的视图/table.html中:

<div>Main content here...</div>
<div ng-include="'views/extracontent.html'"></div>

然后在"views/extractontent.html"中放入一个ng控制器。请记住,ng-include也接受var,因此您可以在tableCtrl和其他表中声明它以包括不同的视图。

如果使用ngRoute,则在$routeProvider配置中设置控制器,而不是在模板中。

$routeProvider.when('/table/1', {
    templateUrl: 'common_table.html',
    controller: 'Table1Controller'
});

doc:ngRoute$routeProvider#methods_when