Angularjs 为什么可以';我的指令是否需要由angular ui router创建的控制器?

Angularjs 为什么可以';我的指令是否需要由angular ui router创建的控制器?,angularjs,angular-ui-router,Angularjs,Angular Ui Router,我正在尝试编写一个指令,该指令要求在angular ui路由器状态定义中配置父控制器 指令“beep”要求:“^1” “Subcroller”是在angular ui router中配置的视图的控制器 该视图包含一个使用指令“beep”的元素 但是:当我导航到子状态时,有一个异常显示为“无法找到分包商” 角度ui路由器中的Bug?我这边有误会吗 复制:只需单击“运行代码片段”,然后单击“子状态”按钮: angular .module('foo',['ui.router'])) .控制器('分包

我正在尝试编写一个指令,该指令要求在angular ui路由器状态定义中配置父控制器

指令“beep”要求:“^1”

“Subcroller”是在angular ui router中配置的视图的控制器

该视图包含一个使用指令“beep”的元素

但是:当我导航到子状态时,有一个异常显示为“无法找到分包商”

角度ui路由器中的Bug?我这边有误会吗

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

angular
.module('foo',['ui.router']))
.控制器('分包商',功能(){
控制台日志(“分包商”);
})
.config(函数($stateProvider,$urlRouterProvider){
$urlRouterProvider。否则(“/root”);
$stateProvider
.state('根'{
url:“/root”,
观点:{
根目录:{
模板:“根状态”+
“次国家”+
''
}
}
})
.state('root.sub'{
url:“/sub”,
观点:{
分:{
控制器:“分包商”,
模板:“SUB”
}
}
});
})
.指令('beep',函数(){
返回{
限制:“A”,
要求:“^subscroller”,
链接:功能(范围、元素、属性、分包商){
console.log(“嘟嘟声:链接”,分包商);
}
};
})
;

指令中的“要求”包括父指令而不是控制器。
使用子控制器的一种方法是在指令“beep”中包含controller:subcroller

您不能搜索控制器,只能搜索同一元素或父元素中的指令

当您拥有该指令时,该指令的控制器将作为link函数的第四个参数传递

此外,指令的控制器和绑定到视图/状态/ng控制器的控制器是不同的概念。指令的控制器没有作用域,它用于向其他指令公开API,最著名的是ngModel的控制器


如果您的指令需要处于特定的状态/控制器,这意味着您的设计有问题。告诉我们您想要做什么功能,我们可以帮助您如何以角度设计。

谢谢!当然,你是对的。例如,“除非找到指定的控制器,否则将抛出一个错误。”,“一个^prefix将使指令在它自己的元素或它的父元素上查找控制器”。这里的医生很多better@StephenFriedrich是的,这是我给在两天内把它们混合在一起的人的第二个答案。别担心,不止你一个人:)我能要求:“^^uiView”
吗?错误表明找不到uiView。为什么?@Shawn不太确定,
^
意味着它必须放在父元素中。顺便问一下,我不知道你为什么需要这个。?指令应该独立于当前视图。您可以使用类似于
$state.$current.name
$state.current.name