对于调试和开发,我使用ng-view
之外的区域来显示我想要看到的内容。它工作正常 1 ,但我必须为它创建两个服务和控制器。我的问题是将它们之间的工作分开是相当混乱的,所以我想摆脱它们中的一个。
我不介意将DebugCtrl
放在$rootScope
或让DebugSvc
控件$scope
(这很黑,但这只是为了黑客攻击,那又怎么样? ),但对于前者,我需要将控制器设置为单例,关于后者,我不知道如何获得$scope
。
我知道控制器不是单例。它们不可能,因为可能有许多独立区域由同一控制器的不同实例控制。但就我而言,我知道我只需要一个实例。 鉴于评论,我想,我需要两者,但我还需要一个明确的标准,如何划分他们之间的工作。
1当然我也使用调试器并登录到控制台,但是这样的调试游戏很好地补充了它们。它还具有通过调试数据填充表单的按钮,定期css重新加载等
答案 0 :(得分:1)
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
指令都是唯一的,并且这种行为不应该被更改。< / p>