gpt4 book ai didi

angularjs - 为什么我的指令不能需要由 angular-ui-router 创建的 Controller ?

转载 作者:行者123 更新时间:2023-12-03 05:35:18 25 4
gpt4 key购买 nike

我正在尝试编写一个指令,该指令需要在 angular-ui-router 状态定义中配置的父 Controller 。

指令“beep”需要:'^subController

“subController”是在 angular-ui-router 中配置的 View 的 Controller 。

该 View 包含一个使用指令“beep”的元素。

但是:当我导航到子状态时,出现一个异常,提示“无法找到子 Controller ”。

Angular 用户界面路由器中的错误?我这边有什么误解吗?

要重现:只需单击“运行代码片段”,然后单击“子状态”按钮:

angular
.module('foo', ['ui.router'])

.controller('subController', function () {
console.log("subController");
})

.config(function ($stateProvider, $urlRouterProvider) {

$urlRouterProvider.otherwise("/root");

$stateProvider
.state('root', {
url: '/root',
views: {
root: {
template: '<button ui-sref="root">Root State</button>' +
'<button ui-sref="root.sub">Sub State</button>' +
'<div ui-view="sub"></div>'
}
}
})

.state('root.sub', {
url: '/sub',
views: {
sub: {
controller: 'subController',
template: '<div beep>SUB</div>'
}
}
});

})

.directive('beep', function () {
return {
restrict: 'A',
require: '^subController',
link: function (scope, element, attributes, subController) {
console.log("beep: linked", subController);
}
};
})
;
<!DOCTYPE html>
<html lang="en">
<head>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.5.5/angular.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/angular-ui-router/0.3.0/angular-ui-router.js"></script>
<script src="app.js"></script>
</head>
<body ng-app="foo">
<div class="root-view" ui-view="root"></div>
<pre id="errors" style="color: #e22; margin-top: 20px;"></pre>
</body>

</html>

最佳答案

您无法搜索 Controller ,只能搜索同一元素或父元素中的指令。

当您拥有该指令时,该指令的 Controller 将作为链接函数的第四个参数传递。

此外,指令 Controller 和绑定(bind)到 View /状态/ng- Controller 的 Controller 是不同的概念。指令的 Controller 没有作用域,它用于向其他指令公开 API,最知名的是 ngModel 的 Controller 。

如果您的指令需要处于特定的状态/ Controller ,则意味着您的设计有问题。告诉我们您想要实现什么功能,我们可以帮助您如何以 Angular 方式设计它。

关于angularjs - 为什么我的指令不能需要由 angular-ui-router 创建的 Controller ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37324119/

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