Используйте один и тот же контроллер дважды с разными данными

У меня есть следующая настройка:

<h2>Current Items</h2>
<table ng-controller="ItemsController">
 <tbody><tr ng-repeat="item in items">
 <td>{{item.id}}</td>
 </tr>
</tbody></table>
<h2>Past Items</h2>
<table ng-controller="ItemsController">
 <tbody><tr ng-repeat="item in items">
 <td>{{item.id}}</td>
 </tr>
</tbody></table>

Я не могу понять, как повторно использовать таблицу html и контроллер, но передать другое значение для типа, поэтому служба Items возвращает разные результаты для двух таблиц.

Я знаю, что могу создать два контроллера и наследовать от BaseItemsController, но это не выглядит правильным для меня. Любые лучшие идеи?

Спасибо!

2 ответа

Вот мое решение:

<h2>Current Items</h2>
<div ng-controller="ItemsController">
 
</div>
<h2>Past Items</h2>
<div ng-controller="ItemsController">
 
</div>


Основываясь на вашем примере сценария, я советую вам использовать один контроллер и фильтровать тип элемента: Текущий | Прошлое в вашем ретрансляторе. Вот так:

<div ng-controller="ItemsController">
<h2>Current Items</h2>
<table>
 <tbody><tr ng-repeat="item in items | filter: /*CURRENT items*/">
 <td>{{item.id}}</td>
 </tr>
</tbody></table>
<h2>Past Items</h2>
<table>
 <tbody><tr ng-repeat="item in items | filter: /*PAST items*/">
 <td>{{item.id}}</td>
 </tr>
</tbody></table>
</div>

Это один набор элементов.

Или вы можете иметь два набора элементов в вашем контроллере, например

$scope.pastItems = [];
$scope.currentItems=[];

Обновление 1:

Если вы используете свой контроллер на разных страницах, вы можете настроить маршрутизацию и $routeparams передать другую инициализацию.

licensed under cc by-sa 3.0 with attribution.