如何从AngularJS中的另一个指令调用指令?

如何从AngularJS中的另一个指令调用指令?,angularjs,angularjs-directive,angularjs-scope,Angularjs,Angularjs Directive,Angularjs Scope,我刚刚开始使用AngularJS。有没有一种方法可以使用另一个指令中的指令? 我想在单击父项时添加新的 编辑:index.html <div class="time" addtime ng-click="addTime()"> <!-- ADD NEW <div resizable draggable ...></div> from directive 'time' HERE --> </div> 编辑:directive.j

我刚刚开始使用AngularJS。有没有一种方法可以使用另一个指令中的指令? 我想在单击父项时添加新的

编辑:index.html

<div class="time" addtime ng-click="addTime()">
  <!-- ADD NEW <div resizable draggable ...></div> from directive 'time' HERE -->
</div>

编辑:directive.js

dragDirectives.directive('addtime', function() {
  return {
    restrict: 'A',
    link: function(scope, element, attr, ctrl) {

    },
    controller: function addtimeCtrl($scope, $element){
      $scope.addTime = function() {
        // ADD NEW <div resizable draggable ...></div> from directive 'time'
      };
    }
  }
});

dragDirectives.directive('time', function() {
  return {
    restrict: 'A',
    template: '<div resizable draggable class="duree" ng-class="{\'resize-active\': isResizeActive, \'drag-active\': isDragActive }" ng-style="{ width: myWidth, left: myLeft }">',
    link: function(scope, element, attr) {

    }
  }
});
dragDirectives.directive('addtime',function(){
返回{
限制:“A”,
链接:函数(范围、元素、属性、ctrl){
},
控制器:函数addtimeCtrl($scope,$element){
$scope.addTime=函数(){
//从指令“time”添加新的
};
}
}
});
指令('time',function()){
返回{
限制:“A”,
模板:“”,
链接:功能(范围、元素、属性){
}
}
});

对于Angular,您不需要做与DOM相关或jQuery相关的事情(即
addEventListener
)。方法是:

  • 让模型描述您拥有的
    元素,例如:

    scope.timeElements = [];
    
  • 在模板中对其进行Itrate:

    <div time ng-repeat="t in timeElements"></div>
    
这只是一个真正解决方案的大纲,因为仍然缺少许多细节,但您应该了解这个想法。一把小提琴将有助于变得更具体

也请查看。

要求:“^parent”//更好的方法
指令('addtime',function()){
返回{
限制:“A”,
模板:“”,
链接:函数(范围、元素、属性、ctrl){
scope.timeElements=[1,2,3]
},
控制器:函数addtimeCtrl($scope){
this.addTime=函数(){
$scope.timeElements.push($scope.timeElements.length+1);
};
}
}
});
指令('time',function()){
返回{
限制:“A”,
要求:“^addtime”,
模板:“时间”,
链接:函数(范围、元素、属性、ctrl){
scope.addTime=ctrl.addTime;
}
}
});

你能用Fiddle发布例子吗?一般情况下,您可以使用
要求:“^parent”
选项您可以检查我的更新吗?我改变了我的方法。谢谢,你的回答帮助了我。
<div class="time" addtime ng-click="addTime()">
scope.addTime = function() {
    scope.timeElements.push(something);
};
require: '^parent' // a better way to go

dragDirectives.directive('addtime', function() {
  return {
    restrict: 'A',
    template: '<div time ng-repeat="t in timeElements"></div>',
    link: function(scope, element, attr, ctrl) {
      scope.timeElements = [1, 2, 3]
    },
    controller: function addtimeCtrl($scope) {
      this.addTime = function() {
        $scope.timeElements.push($scope.timeElements.length + 1);
      };
    }

  }
});

dragDirectives.directive('time', function() {
  return {
    restrict: 'A',
    require: '^addtime',
    template: '<div ng-click="addTime()">time</div>',
    link: function(scope, element, attr, ctrl) {
      scope.addTime = ctrl.addTime;
    }
  }
});