【发布时间】:2026-02-17 00:25:01
【问题描述】:
我正在尝试使用 require 连接两个指令并共享父控制器。
我在其他项目中已经完成了无数次,但对于我的一生,我无法让它工作......
指令控制器this 正在返回未定义,这反过来会导致难以将方法传递给子指令...
这是我的父指令代码:
app.directive('defaultHeader', () => {
let defaultHeaderCtrl = ($scope, $element) => {
let containEl,
elHeight = 500;
console.log(this) // returns 'undefined'
function resizeElement(el, height) {
el[0].style.height = `${height}px`
}
if (_.isUndefined($scope.coverImgUrl)) {
resizeElement($element, elHeight);
} else {
}
};
return {
restrict: 'A',
scope: {
coverImgUrl: '='
},
controller: defaultHeaderCtrl
};
});
This fiddle 表明指令控制器this 应该返回构造函数。
如果有人感兴趣,这里有一些上下文:
- ui路由模板是指令元素
<div default-header data="data"></div> - ui 路由器解析数据,然后通过控制器将其传递给指令
感谢您的帮助
【问题讨论】:
-
在指令代码中限制“A”,但在您的模板中,您将指令用作元素。
-
感谢@FidanHakaj - 这只是示例代码,但我对其进行了修复以更好地代表实际指令
-
我打开了你的小提琴,它正在记录
Constructor {},而不是未定义 -
@MarioLamacchia - 确切地说 - 小提琴表明它应该返回构造函数,而我在项目中的指令不是
标签: javascript angularjs this angular-directive