如何在templateUrl中访问我为angularjs指令声明的控制器?

时间:2014-01-20 06:25:06

标签: angularjs angularjs-directive angularjs-controller

我想使用带控制器的指令,但我想在url模板中访问同一个控制器。我怎样才能做到这一点?例如,我想要的是:

<my-directive ng-click="myController.doSomething()"></my-directive>

如果我没有制作自定义指令并声明

,那将会产生相同的效果
<div ng-controller="MyController as myController" ng-click="myController.doSomething()"></div>

注意:我不是在寻找一种使用jquery来绑定链接函数中的点击行为的解决方案。

澄清:我正在使用带有angularjs的打字稿,我想做类似以下的事情:

export class Controller {
  public items = [item1, item2, item3];

  public doSomething() {
    // do something
  }
}

export class MyDirective implements ng.IDirective {
  public templateUrl = "path/to/url";
  public controller = Controller;
  public link = // whatever my link function does;
}

在模板中

<div ng-repeat="item in Controller.items" ng-click="Controller.doSomething()></div>

除了我实际上不知道如何引用指令使用的控制器。有没有办法做到这一点?

1 个答案:

答案 0 :(得分:0)

让我们首先与小提琴互动,试着找出你想要达到的目标。这个当前包含一个可以单击的指令,并执行一些内部指令逻辑。

http://jsfiddle.net/3EFH4/

它使用elem.on()代替ng-click来捕获事件。如果您肯定想使用控制器来处理点击,您需要解释原因,以及它是否需要在指令外部(这通常是因为需要交互的可变数据)。