如何防止angularjs指令之间的范围冲突?

时间:2016-06-14 11:50:11

标签: javascript angularjs

我创建了一个名为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的名字。

我该怎样做才能防止他们发生碰撞?

1 个答案:

答案 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
        }
    };
});