在指令文档中,您可以使用以下内容隔离范围:
.directive('myDialog', function() {
return {
restrict: 'E',
transclude: true,
scope: {
'close': '&onClose'
},
templateUrl: 'my-dialog-close.html'
};
});
我正在尝试编写一个仅限于属性的指令。在使用“A”进行限制时,如何获得相同的隔离功能?
.directive('doSomething', function() {
return {
restrict: 'A',
scope: {
'close': '&???'
},
link: function(scope, element, attrs) {
element.on('click', function() {
scope.close();
});
}
};
});
我会像这样使用指令:
<button do-something="doSomething()" type="button">Do Something</button>
答案 0 :(得分:1)
隔离范围不取决于restrict
属性。您需要在隔离范围中提及那些您将从父范围传递的变量/方法。
如下面的隔离范围声明,您已使用close
作为隔离范围变量,它将接受方法,这意味着您应该在close
属性中传递该方法实例。
scope: {
close: '&' //it shouldn't be with quotes
},
<强>标记强>
<button do-something close="doSomething()" type="button">Do Something</button>
修改强>
如果你想要为你的属性名称设置别名,那么别名将在&
close: '&myAlias'
之后存在,通过使用别名你可以避免执行其他指令(理想情况下你的指令不应该'有这样的名字)
scope: {
close: '&myAlias' //it shouldn't be with quotes
},
<强>标记强>
<button do-something my-alias="doSomething()" type="button">Do Something</button>