13

我试图将一些数据放在我的指令创建的范围内。这是我的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

4

2 回答 2

16

ControllerAs在 1.2.0 中添加了对指令的支持,因此您必须使用最新版本,而不是1.0.2来自链接小提琴。这样它就像你想要的那样工作。

于 2013-09-21T11:28:46.143 回答
-1

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

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

“controller as”表达式适用于普通控制器。因此,请帮自己一个忙,并将您的逻辑放入指令链接功能中。

于 2013-09-21T12:54:53.610 回答