gpt4 book ai didi

angularjs - 在 AngularJs 中从父指令调用子指令函数

转载 作者:行者123 更新时间:2023-12-02 23:04:29 26 4
gpt4 key购买 nike

如何在父指令的按钮单击监听器中调用子指令中定义的方法。

angular.module('editableDivDirective', [])

.directive("editableDiv", function() {
var directive = {};
directive.restrict = 'E';
directive.replace = 'true';
directive.scope = {};
directive.transclude = 'true';
directive.template =
'<div id="wrapper">' +
'<div required class="text-area" name="search" contenteditable="true" ng-model="formData.text"></div>' +
'<button type="submit" class="btn btn-warning add-button" id="submit" ng-click="createTodo()">Add</button>' +
'</div>';
directive.link = function(scope, element, attrs, controller) {
scope.createTodo = function(){
// do something
// Call child directive setPlaceholderText()
}
};

return directive;
})
.directive("contenteditable", function() {
var directive = {};
directive.require = ['^editableDiv','?ngModel'];
directive.restrict = 'A';
directive.scope = {};
directive.link = function(scope, element, attrs, ctrls) {
var ngModel = ctrls[1];
var editableDivController = ctrls[0];

function setPlaceholderText(){
return element.html("Hello World");
}

return directive;
})

我想在调用父指令的“scope.createTodo()”时调用子指令setPlaceholderText()。

如何才能做到这一点。

最佳答案

在您的父指令中

link: function($scope,$el,$attr) {
$el.find(".thing").on('click',function(event){
$scope.$broadcast('thing', $scope.someData);
});
}

在您的子指令中

link: function($scope. $el, $attr) {
$scope.$on('thing',function(event, someData) {
alert('My parent called me with this data: ' + someData);
});
}

关于angularjs - 在 AngularJs 中从父指令调用子指令函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27553880/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com