AngularJS 缺少必需的控制器
AngularJS Missing required controller
我想创建两个具有以下结构的指令:
<div ng-app="myApp">
<div ui-foo="test">
<div ui-bar="test2"></div>
</div>
</div>
第一个指令是 uiFoo
,第二个是 uiBar
。
为了定义这些指令,我设置了以下模块定义:
angular.module('ui', []).directive('uiFoo',
function() {
return {
restrict: 'A',
link: function($scope, element, attrs) {
$scope.message = function() {
alert(1);
};
}
};
}
).directive('uiBar',
function() {
return {
restrict: 'A',
require: '^uiFoo',
scope: true,
link: function($scope, element, attrs, uiBarController) {
uiBarController.message();
}
};
}
);
angular.module('myApp', ['ui']);
我遇到的问题称为 error/$compile/ctreq
(Controller 'uiFoo', required by directive 'uiBar', can't be found!
),可以在此处找到它的文档 (https://docs.angularjs.org/error/$compile/ctreq?p0=uiFoo&p1=uiBar)。我知道,有点乏味。
它似乎没有解决我的问题。
我为此创建了一个 JSFiddle,您可以在此处找到它 http://jsfiddle.net/A8Vgk/1187/
谢谢!
如错误所述,您在 uiFoo
指令中缺少控制器。
当您使用 require: ^uiFoo
时,它告诉 Angular 您想要访问名为 uiFoo
的指令中的控制器。
你没有在那个指令中定义控制器,所以你得到了错误。
只需定义控制器:
angular.module('ui', []).directive('uiFoo',
function() {
return {
restrict: 'A',
link: function($scope, element, attrs) {
$scope.message = function() {
alert(1);
};
},
controller: function($scope) {
this.message = function () {
alert("works!");
}
}
};
}
)
我想创建两个具有以下结构的指令:
<div ng-app="myApp">
<div ui-foo="test">
<div ui-bar="test2"></div>
</div>
</div>
第一个指令是 uiFoo
,第二个是 uiBar
。
为了定义这些指令,我设置了以下模块定义:
angular.module('ui', []).directive('uiFoo',
function() {
return {
restrict: 'A',
link: function($scope, element, attrs) {
$scope.message = function() {
alert(1);
};
}
};
}
).directive('uiBar',
function() {
return {
restrict: 'A',
require: '^uiFoo',
scope: true,
link: function($scope, element, attrs, uiBarController) {
uiBarController.message();
}
};
}
);
angular.module('myApp', ['ui']);
我遇到的问题称为 error/$compile/ctreq
(Controller 'uiFoo', required by directive 'uiBar', can't be found!
),可以在此处找到它的文档 (https://docs.angularjs.org/error/$compile/ctreq?p0=uiFoo&p1=uiBar)。我知道,有点乏味。
它似乎没有解决我的问题。
我为此创建了一个 JSFiddle,您可以在此处找到它 http://jsfiddle.net/A8Vgk/1187/
谢谢!
如错误所述,您在 uiFoo
指令中缺少控制器。
当您使用 require: ^uiFoo
时,它告诉 Angular 您想要访问名为 uiFoo
的指令中的控制器。
你没有在那个指令中定义控制器,所以你得到了错误。
只需定义控制器:
angular.module('ui', []).directive('uiFoo',
function() {
return {
restrict: 'A',
link: function($scope, element, attrs) {
$scope.message = function() {
alert(1);
};
},
controller: function($scope) {
this.message = function () {
alert("works!");
}
}
};
}
)