如何为angularjs中的每个指令创建一个新的控制器?

时间:2014-07-21 21:59:33

标签: angularjs

我有一个指令,我想在多个div中引用。每个div必须能够访问相同的值。这是一个简化版本:

.directive('sampleDir', function() {

  var control = function($scope, $element, $attr) {
    $scope.value1 = '';
    $scope.value2 = '';
  }

  return {
    controller: control,
    link: link // defined in code somewhere and needs access to separate value1 and value2
  };

});

所以基本上每个使用这个指令的div都应该为value1和value2设置单独的值,或者应该有一个单独的控制器?我该怎么做?

2 个答案:

答案 0 :(得分:1)

首先,您使用linkcontroller错误。

您在control()中提供的参数是link()的参数。您需要在control()中使用依赖注入。

其次,如果您需要每个指令的控制器实例,则需要在指令的返回中使用scope : true选项;

答案 1 :(得分:0)

将为指令的每个实例创建一个单独的控制器实例(和范围),因此您不必在此处执行任何特殊操作以确保指令的每个实例都有自己的范围。

如果您想要多个与共享状态或其他数据无关的指令实例,请使用服务或工厂。