2016-04-12 4 views
0

Для отладки и разработки я использую область за пределами ng-view, показывающую, что я просто хочу увидеть. Он отлично работает , но мне пришлось создать и сервис и контроллер для него. Моя проблема в том, что разделение работы между ними довольно запутанно, поэтому я хотел бы избавиться от одного из них.Могу ли я создать однорядный угловой контроллер?

Я не против сдачи DebugCtrl в $rootScope или позволяя контролировать DebugSvc$scope (это Hacky, но это только для взлома, так что?), Но первое, что я должен сделать контроллер к синглтону и относительно последнего, я понятия не имею, как получить $scope.

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

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

+1

Возможный дубликат [Что такое жизненный цикл контроллера AngularJS?] (Http://stackoverflow.com/questions/16094940/what-is-the-lifecycle-of-an-angularjs-controller) – Makoto

+1

IMO это не действительно хорошая причина для объединения обязанностей двух типов. На самом деле, как раз наоборот. Если обязанности не ясны, то это часто указывает на необходимость большего разделения обязанностей. Однако, чтобы ответить на ваш вопрос, контроллеры не предназначались для создания в виде синглтонов, поэтому я бы не стал его пробовать, если бы я был вами. Если у вас есть совместное государство, держите его в службе. – Igor

+1

Вышеупомянутая ссылка отвечает на вопрос, может ли контроллер быть одноточечным. Это не так. – Makoto

ответ

0
app.factory('controllerSingleton', function() { 
    return { ... }; 
}); 

app.controller('SomeController', function (controllerSingleton) { 
    return controllerSingleton; 
}); 

В то время как контроллер используется синтаксис controllerAs в этой манере, экземпляр контроллера одноточечно:

<p ng-controller="SomeController as some"><input ng-model="some.value"></p> 
<p ng-controller="SomeController as awesome">{{ awesome.value }}</p> 

Очевидно, что это не сработает, если свойства области назначаются непосредственно объекту $scope, который является уникальным для каждой директивы ng-controller, и это поведение не должно изменяться.

Смежные вопросы