Javascript 父子关系指令之间的绑定

Javascript 父子关系指令之间的绑定,javascript,angularjs,angularjs-directive,angularjs-scope,Javascript,Angularjs,Angularjs Directive,Angularjs Scope,在父子关系中我有两个指令,每个指令都有link实现。父项设置一个范围变量-名称,该变量作为属性传递给子项 链接的执行顺序是-首先是子链接链接,然后是父链接链接 在父链接完成执行后,它将广播给它的子链接,但子链接似乎还没有得到这个范围的更改 在此示例- var myAppModule=angular.module('myAppModule',[])。 指令('parent',函数($parse){ 返回{ 限制:'E', 链接:功能(范围){ scope.name=“Dan”; log(“父:我

在父子关系中我有两个指令,每个指令都有
link
实现。
父项
设置一个
范围
变量-
名称
,该变量作为属性传递给
子项

链接的执行顺序是-首先是
子链接
链接,然后是
父链接
链接

父链接完成执行后,它将广播给它的子链接,但子链接似乎还没有得到这个
范围的更改

在此示例-

var myAppModule=angular.module('myAppModule',[])。
指令('parent',函数($parse){
返回{
限制:'E',
链接:功能(范围){
scope.name=“Dan”;
log(“父:我的名字是”+scope.name);
范围:$广播(“准备就绪”);
}
}
})
.directive('child',function($parse){
返回{
限制:'E',
范围:{
名称:'='
},
链接:功能(范围){
作用域:$on(“就绪”,函数(){
log(“子:我的名字是”+scope.name);
})
}
}
});

首先,除非使用转换,否则不能将
指令插入这样的
指令

然后,不建议处理事件(
$broadcast
$on
)以从家长到孩子进行讨论,相反,您可以拥有一个共享服务,或者在这种情况下更简单,只需注意解决
名称
绑定

请参见此代码段的工作原理:

var myAppModule=angular.module('myAppModule',[])。
指令('parent',函数($parse){
返回{
限制:'E',
模板:“父:{{name}}”,
是的,
链接:功能(范围){
scope.name=“Dan”;
log(“父:我的名字是”+scope.name);
}
}
})
.directive('child',function($parse){
返回{
限制:'E',
范围:{
名称:'='
},
模板:“子:{{name}}”,
链接:功能(范围){
作用域:$watch('name',function(){
log(“子:我的名字是”+scope.name);
});
}
}
});


我遇到了类似的情况,只是我处理的是一些span元素,它们在指令中被
附加了
。如果你能给我一些建议,我将不胜感激——除非你使用转换,否则你不能有这样的指令。当然可以。为什么不可能呢?@zeroflagL你是对的,但是如果不使用
进行转换,则没有什么意义,因为它下面的所有内容都不会限制其范围,而是共享其父范围。然而这里的
既没有自己的作用域,也没有孤立的作用域,所以实际上是相同的。但是,我仍然想知道为什么要使用嵌套元素而不进行转换。但我可能完全错了。指令是元素、属性还是类只是形式问题。如果没有转换,使用
ngModel
是毫无意义的,因为它下面的所有内容都不会继承它的作用域。不完全是,这涉及到语义,毕竟这是HTML的要点。单独使用
是没有意义的。只有当输入范围继承自ngModel one时,
才有意义。换句话说,没有转换,
将产生与
相同的作用域和行为。如果您想继续讨论,不想干扰问题,我们应该打开聊天室。(我觉得很有意思的讨论)关于消化周期,你是对的。