Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 定向通信与耦合_Javascript_Angularjs - Fatal编程技术网

Javascript 定向通信与耦合

Javascript 定向通信与耦合,javascript,angularjs,Javascript,Angularjs,我有两个指令,下拉菜单和面板 面板包含下拉列表。使用require“^panel”并指定控制器,我可以使两者通信 你可以在这里看到一个例子 有棱角的 .模块(“应用程序”,[]) .controller(“ctrl”,函数($scope){ $scope.test=“欢迎” }) .指令(“下拉列表”,函数(){ 返回{ 需要“^panel”, 限制条件:“E”, 是的, 作用域:{}, 模板:“{selectedValue}}12”, 链接:功能(范围、b、c、面板控制器){ scope

我有两个指令,下拉菜单和面板

面板包含下拉列表。使用require“^panel”并指定控制器,我可以使两者通信

你可以在这里看到一个例子


有棱角的
.模块(“应用程序”,[])
.controller(“ctrl”,函数($scope){
$scope.test=“欢迎”
})
.指令(“下拉列表”,函数(){
返回{
需要“^panel”,
限制条件:“E”,
是的,
作用域:{},
模板:“{selectedValue}}12”,
链接:功能(范围、b、c、面板控制器){
scope.selectedValue=1;
范围.$watch('selectedValue',函数(newVal,oldVal){
panelController.setValue2(新值)
})
}
}
})
.指令(“面板”,功能(){
返回{
限制条件:“E”,
是的,
控制器:功能($scope){
this.setValue2=函数(val){
$scope.value2=val;
如果(val==1){
$scope.style1=true;
$scope.style2=false;
}
如果(val==2){
$scope.style1=!true;
$scope.style2=!false;
}
}
},
模板:“值:{{value2}}
”, 作用域:{}, 链接:函数(作用域,b,c){} } }) {{test}}
我不知道,但是
下拉菜单
指令也独立工作。谢谢rahil,如果你查看控制台,你会看到它抛出了一个错误,这是因为
面板
不再是父指令,
下拉菜单
指令控制器的第四个参数是
未定义
,您只需使用
if
条件并将
放置到
require
属性
require:“?^panel”
即可避免这种情况,因此父控制器是可选的。太棒了!这就解决了问题,你从哪里找到的信息?我已经读了很多关于angular的文章,但这是我第一次看到这个,非常感谢!)