2015-10-01 5 views
1

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

Например давайте над упрощенным контроллером регистра:

$scope.username = ""; 
$scope.password = ""; 

$scope.validateUsername= function(){ 
    ...... 
} 
$scope.validatePassword= function(){ 
    ...... 
} 

$scope.updateUserConfig = function(){ 
    //a rest call here 
} 

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

Я думал, что контроллер должен быть логикой для вида, к которому он используется, в то время как «модель», то есть имя пользователя и пароль должны быть где-то еще, а также вызов службы отдыха.

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

Я не уверен в аспекте данных, однако, нормально ли хранить данные в контроллере или есть ли более эффективная практика для этого?

ответ

0

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

Эти данные часто поступают из внешнего источника или необходимы во множестве представлений/контроллеров, поэтому для фабрики/службы обычно возвращать объект контроллеру, а затем назначать этот объект свойству $scope. Таким образом вы можете абстрагировать этот слой и делиться данными через ваше приложение, не повторяя себя.

+0

Это именно то, о чем я думал, поэтому имя пользователя и пароль можно было бы извлечь в объект службы с чем-то вроде $ scope.model = MyService.getModel() массивное количество псевдокодов там – user1383163

+0

Если я понимаю разные правильно фабрики являются синглтонами, а сервисы - экземплярами, поэтому для моделей я хочу услуги, а остальные - заводы. – user1383163

+0

Да, не зная точную работу вашего приложения, это, скорее всего, то, что я буду делать. – aw04