我可以创建一个单独的angularjs控制器吗?

时间:2016-04-12 15:01:48

标签: angularjs

对于调试和开发,我使用ng-view之外的区域来显示我想要看到的内容。它工作正常 1 ,但我必须为它创建两个服务和控制器。我的问题是将它们之间的工作分开是相当混乱的,所以我想摆脱它们中的一个。

我不介意将DebugCtrl放在$rootScope或让DebugSvc控件$scope(这很黑,但这只是为了黑客攻击,那又怎么样? ),但对于前者,我需要将控制器设置为单例,关于后者,我不知道如何获得$scope

我知道控制器不是单例。它们不可能,因为可能有许多独立区域由同一控制器的不同实例控制。但就我而言,我知道我只需要一个实例。 鉴于评论,我想,我需要两者,但我还需要一个明确的标准,如何划分他们之间的工作。

1当然我也使用调试器并登录到控制台,但是这样的调试游戏很好地补充了它们。它还具有通过调试数据填充表单的按钮,定期css重新加载等

1 个答案:

答案 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>