javascript - ¿Cómo evitar la colisión de alcance entre las directivas angularjs?


He creado una directiva simple, llamada match que se usa como:

<input match='pattern' />

La línea de declaración de mi directiva es:

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

Sin embargo, después de un tiempo quise usar BootstrapUI para angularjs, y tan pronto como comencé a usar el componente de escritura anticipada, encontraron un problema al usar el mismo alcance:

Múltiples directivas [match, uibTypeaheadMatch] solicitando un alcance nuevo/aislado en

Necesito emparejar y escribir juntos enuna página. La escritura anticipada no está bajo mi control y no quiero cambiar el nombre de la coincidencia.

¿Qué puedo hacer para evitar su colisión?



------------Respuesta------------

El problema es que tanto su directiva como la directiva de escritura anticipada solicitan un alcance aislado en el mismo elemento y angular no lo permite.

Para superar este problema, defina la directiva de una manera diferente:

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

Etiquetas: javascript angularjs

Artículos relacionados:

php - mysql_field_name() espera que el parámetro 1 sea un recurso,

ios: el menú emergente en formato horizontal ocupa toda la pantalla