使用Controller As表示法时如何将控制器注入依赖关系?

时间:2015-06-30 20:21:49

标签: angularjs angularjs-controller angularjs-controlleras

我有一个依赖于另一个控制器的控制器(用于设置信息)。我尝试使用Controller As模式,但是我收到注入错误。

这是我的控制人员:

angular.module('app2', [])

.controller('ctrl1', [function () {
    var controller = this;
    controller.value = 6;
}])

.controller('ctrl2', ['ctrl1', function (ctrl1) {
    var controller = this;
    controller.testValue = 5;
    controller.runTest = function () { return ctrl1.Value * 2; };
}])

以及它的使用方式

<body ng-controller="ctrl2 as ctrl">
    {{ ctrl.runTest() }}
</body>

我在这里看到这篇文章,但它看起来并不相同,我无法弄清楚如何使该解决方案有效:AngularJS How to inject dependencies when using controller-as syntax

1 个答案:

答案 0 :(得分:1)

我真的建议您使用service在控制器之间进行通信并保存共享数据。
许多简单示例中的一个can be found e.g. here

但是,如果你坚持,那么你需要注入$controller

.controller('ctrl1', function() {
    var controller = this;
    controller.value = 6;
})

.controller('ctrl2', function($controller) {
    var controller = this;
    controller.testValue = 5;

    controller.runTest = function() {
      return $controller('ctrl1').value * 2; // <-note: '.Value' does not exist in ctrl1
    };
});