是否可以在AngularJs指令上动态设置“require”选项?

时间:2015-05-01 16:25:48

标签: angularjs angularjs-directive

我试图了解是否可以动态设置指令的“require”选项。例如......

  app.directive('test', [function () {
  return {
    require: someVar
  }}

我想访问“test”中的未知控制器。控制器未知,因为我通过配置动态生成页面。理想情况下我想......

<test some-var="^parent"><test>

编辑 - 我还应该声明我只想在页面加载时设置一次。之后它不会改变。

谢谢,

乍得

1 个答案:

答案 0 :(得分:0)

您是在尝试访问指令的控制器,还是访问任意控制器?根据你的问题,听起来你只需要一个控制器,这需要使用与require方法不同的方法。

directive('testDirective',function() {

  var directive = {
    restrict: 'E',
    link: link,
    name: "myController",
    controller: "@",
    controllerAs: "vm",
    bindToController: true,
    template: "<div>{{vm.testMessage}}</div>"
  }

  return directive;

  function link(scope,iElement,iAttrs) {

  }

});

在这种情况下,绑定到模板的控制器由name属性驱动,可以在指令DOM元素上分配,就像这样

<test-directive my-controller="mainController"></test-directive>

将my-controller属性设置为mainController,您可以定义一个任意控制器来定义自己的testMessage属性

controller('sampleOneController', function() {
   var vm = this;
   vm.testMessage = "from sample One Controller"; 
}).

这是一个jsfiddle与此演示

https://jsfiddle.net/0302gLav/32/