gpt4 book ai didi

javascript - Angular : require injected controller from module

转载 作者:行者123 更新时间:2023-12-03 07:44:17 25 4
gpt4 key购买 nike

我正在尝试在自定义指令中使用 require 函数。但我根本无法让它发挥作用。这就是我所拥有的:

JS:

var app = angular.module('main', []);
app.controller('MyController', ['$scope', function($scope){
var random = Math.random()*10000;
console.log('init random: ' + random);
$scope.test = function(controllerName){
console.log(controllerName + " " + random);
}
}]);

app.directive('myDirective', function(){
return{
require: "^MyController",
link: function(scope, els, attrs, req){
scope.test('myDirective');
}
}
});
app.directive('mySecondDirective', function(){
return{
require: "^MyController",
link: function(scope, els, attrs, req){
scope.test('mySecondDirective');
}
}
});

HTML:

<div ng-app="main" ng-controller="MyController">
<my-directive></my-directive>
<my-second-directive></my-second-directive>
</div>

https://jsfiddle.net/hr8thyq5/3/

我收到的只是此错误消息:指令“myDirective”所需的 Controller “MyController”无法找到!

我还需要做什么才能使其正常工作?

最佳答案

需要了解原因 -

如果您想共享 Controller 的同一个实例,则可以使用require

require 确保另一个指令的存在,然后将其 Controller 作为链接函数的参数包含在内。因此,如果一个元素上有两个指令,则您的指令可以要求另一个指令的存在并获得对其 Controller 方法的访问权限。一个常见的用例是需要 ngModel

^require,添加插入符号后,除了当前元素之外还会检查指令上方的元素,以尝试查找其他指令。这允许您创建复杂的组件,其中“子组件”可以通过其 Controller 与父组件进行通信,从而达到很好的效果。示例可以包括选项卡,其中每个 Pane 都可以与整个选项卡通信以处理切换;一套 Accordion 可以确保一次只有一个打开;等等

无论哪种情况,您都必须同时使用这两个指令才能发挥作用。 require 是组件之间通信的一种方式。

要进一步了解,请访问此处:enter link description here

关于javascript - Angular : require injected controller from module,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35272702/

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