angularjs 控制器在指令中使用控制器作为不能工作

angularjs controller in directive using controllerAs can not work?

本文关键字:控制器 工作 不能 指令 angularjs      更新时间:2023-09-26

我正在尝试将一些数据放在我的指令创建的范围内。这是我的jsFiddle。

以下代码运行良好

.directive('directive1', function () {
    return: {
        scope: true,
        controller: function ($scope) {
            $scope.name = 'world';
        }
    }
})
<div directive1>
    <p>{{ name }}</p>
</div>

但是这些代码不起作用

.directive('directive2', function () {
    return: {
        scope: true,
        controller: function () {
            this.name = 'world';
        },
        controllerAs: 'testCtrl'
    }
})
<div directive2>
    <p>{{ testCtrl.name }}</p>
</div>

我的代码有什么问题吗? 还是我对controllerAs误解了什么?

ControllerAs 在 1.2.0 中添加了对指令的支持,因此您必须使用最新版本,而不是从链接的小提琴1.0.2。这样它就可以按照您想要的方式工作。

请不要与指令控制器和普通控制器混淆!所以是的,直接可以有一个控制器,它控制某些东西。但它并不等同于普通控制器!

将指令逻辑放入指令控制器实际上没有问题,但指令控制器实际上用于跨指令通信。一个指令的控制器实例可以注入到位于同一元素(或子元素)上的另一个指令中。

"控制器作为"表达式适用于普通控制器。所以只要帮你自己的忙,把你的逻辑放到指令链接函数中。