如何从AngularJS中的另一个指令调用指令?
我刚刚开始使用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
编辑: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;
}
}
});