Javascript angularjs在两个模板之间共享自定义指令
我有一个带有下一个参数的自定义指令Javascript angularjs在两个模板之间共享自定义指令,javascript,angularjs,angularjs-directive,Javascript,Angularjs,Angularjs Directive,我有一个带有下一个参数的自定义指令 return { scope: { ngModel: '=' }, require: "ngModel", link: function (scope, element, attrs, ngModel) { // directive code ... } 和两个使用此指令的模板 //template 1 <div class="panel-body"&
return {
scope: {
ngModel: '='
},
require: "ngModel",
link: function (scope, element, attrs, ngModel) {
// directive code ...
}
和两个使用此指令的模板
//template 1
<div class="panel-body">
<div ng-include src="'email.html'"></div>
</div>
// email.html
<div id="template"
ng-model="emailNotification"
custom-directive></div>
// template 2
<div class="panel-body">
<div ng-include src="'sms.html'"></div>
</div>
// sms.html
<div id="template"
ng-model="smsNotification"
custom-directive></div>
//模板1
//email.html
//模板2
//sms.html
这里的问题是,当我在这两个模板之间切换时,“自定义指令”中的ng模型不会刷新,并且两个不同的ng模型之间会共享值。但我希望该指令不会这样做
我的错误在哪里?为什么指令共享这个变量 使用=运算符时,指令的scope属性将以相同的名称绑定到父级的scope属性。由于在同一父级内的指令的两个实例上都使用ng模型,因此它们最终都引用了相同的ng模型 如果要从父范围中获取属性的计算值,请使用@binding
return {
scope: {
ngModel: '@'
},
require: "ngModel",
link: function (scope, element, attrs, ngModel) {
// directive code ...
}
指令的作用域有几种不同的形式。根据您期望的结果,您可以全部使用它们。它们是
scope:true
,scope:{}
,scope:false
每个作用域的行为都不同。您要查找的范围是scope:{}
,或scope:true
如果确实使用了范围:{}
,则希望确保其中的元素使用了正确的语法=
、@
和&
。在您的情况下,您需要使用@
符号
符号说明:
@
:将此属性作为字符串传递
=
:数据将此属性绑定到指令的父范围。
&
:从父作用域传入一个函数,稍后调用。用于传递延迟计算的角度表达式。在这两个模板之间切换是什么意思?你能用一把小提琴来说明你面临的问题吗?这么简单,这就解决了我的问题!非常感谢,我很感激!谢谢你的推荐!