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

标签 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 组件时,他们在使用相同范围时遇到了问题:

Multiple directives [match, uibTypeaheadMatch] asking for new/isolated scope on

我需要匹配,并在一页中一起输入。 Typeahead 不在我的控制之下,我不想更改 match 的名称。

我能做些什么来防止它们发生碰撞?

最佳答案

问题是您的指令和 Typeahead 指令都要求在同一元素上使用隔离范围,而 Angular 不允许这样做。

要克服这个问题,请以不同的方式定义指令:

app.directive('match', function () {
    return {
        restrict: 'A',
        require: 'ngModel',
        link: function (scope, element, attributes, ngModel) {
            var match = attributes.match;
            //do your stuff
        }
    };
});

关于javascript - 如何防止angularjs指令之间的范围冲突?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37811195/

相关文章:

javascript - Angular 1.5 范围变量在 PouchDB 响应函数中不起作用

javascript - 对象不是 AngularJS 中的函数

javascript - 获取图像 jasmine-Angular 的警告 404

javascript - 用 Angular 渲染动态占位符

javascript - 嵌套模板的 KnockoutJS 绑定(bind)

javascript - 像 Facebook 聊天系统一样向上滚动加载数据

javascript - 如何在类似于gmail和facebook的textarea中实现emoji

javascript - Qualtrics 答案选择随机化 升序与降序

javascript - 是否可以在不使用服务器端代码的情况下有条件地将 JavaScript 文件添加到页面?

javascript - angularjs - 如何从 url 检索数据