Такой же угловой контроллер для разного вида

У меня есть требование перечислить, отредактировать и удалить объект. У меня разные взгляды на каждую из этих операций. Я хочу знать, хорошо ли использовать один и тот же Угловой контроллер только для этих операций, который работает с каждой из операций или должен быть отдельный контроллер для каждого?

Также, если вы используете один и тот же контроллер для этих операций, можно ли вызывать разные функции при загрузке различных представлений? Поэтому, когда пользователь переходит к просмотру списка, метод списка вызывается при загрузке страницы, и когда он переходит к редактированию, метод редактирования контроллера вызывается при загрузке вида редактирования. Мне удается достичь этого, вызвав методы, используя ngInit, но, по-видимому, это не рекомендуется в v1.2 и должно использоваться только с ngRepeat.

Мой вопрос подобен этому. Угловое - использование одного контроллера для множества когерентных представлений по нескольким HTTP-запросам

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

2 ответа

Я получил свой ответ здесь: используя тот же контроллер для всех операций CRUD (Rails-like)

По-видимому, хорошей практикой является использование другого контроллера для каждого вида, и он не должен работать как служба. Это совсем другое для кого-то из MVC/WebAPI в угловатое.


Лучше всего было бы написать служебную службу, которая может использоваться через контроллер. Используйте эту службу в разных контроллерах.

Ваш сервис будет выглядеть примерно так:

(function() {
'use strict';
// this function is strict...

angular
 .module('myapp.services', [])
 .service('Utility', function() {
 var Utility = {};

 Utility.edit = function(id, dataset) {
 //perform edit related task here 
 };

 Utility.delete = function(id, dataset) {
 //perform edit related task here 
 };
 return Utility;
 })
}());

licensed under cc by-sa 3.0 with attribution.