我创建了一个名为match
的简单指令,其使用方式如下:
<input match='pattern' />
我的指令的声明行是:
app.directive('match', function () {
return {
restrict: 'A',
require: 'ngModel',
scope: {
pattern: '=match'
},
link: function (scope, element, attributes, ngModel) {
// doing stuff here
}
};
});
但是,过了一段时间我想为angularjs使用BootstrapUI,并且一旦我开始使用typeahead组件,他们就遇到了使用相同范围的问题:
多个指令[match,uibTypeaheadMatch]要求
上的新/隔离范围
我需要match
,并在一个页面中一起输入。 Typeahead不在我的控制之下,我不想改变match
的名字。
我该怎样做才能防止他们发生碰撞?
答案 0 :(得分:0)
问题是你的指令和Typeahead指令都要求在同一个元素上使用隔离范围而角度不允许它。
要解决此问题,请以不同的方式定义指令:
app.directive('match', function () {
return {
restrict: 'A',
require: 'ngModel',
link: function (scope, element, attributes, ngModel) {
var match = attributes.match;
//do your stuff
}
};
});