Шаблон триггера AngularJS перед компиляцией - PullRequest
0 голосов
/ 17 сентября 2018

У меня есть такая директива:

app.directive('myInput', function() {
    return {
        priority: 110,
        restrict: 'E',
        replace: true,
        transclude: true,
        scope: true,
        template: function(elem, attr){
            return '<div><input type="text" ng-model="'+attr["model"]+'" /></div>';
        },
        controller: function(){
        },
        compile: function(tElem, tAttrs){
            // = compile

            // = link
            return {
                // pre-link
                pre: function(scope, elem, attr, ctrl, transclude){
                },

                // post-link
                post: function(scope, elem, attr, ctrl, transclude){
                }
            }
        },
    };
});

С этим я хочу использовать <myInput model="..."></myInput> Теги в HTML. (конечно, есть намного больший логик, но это ядро ​​с проблемой)
Все идет нормально. Работает нормально только с этим.
Например:

пользователь в HTML: <myInput model="test"></myInput>
финал по вызову: <div><input type="text" ng-model="test" /></div>

Но теперь я хочу, чтобы пользователь мог добавлять атрибуты к тегу myInput. Атрибуты директива не знает. И директива должна добавить эти атрибуты к реальному входному тегу.
Нечто подобное в этом примере:

пользователь в HTML: <myInput model="test" someAttr="bla" moreAttr="blub"></myInput>
финал по вызову: <div><input type="text" ng-model="test" someAttr="bla" moreAttr="blub" /></div>

Также работает.
Но теперь я использую уже существующий атрибут из uiMask.
Идея например:

пользователь в HTML: <myInput model="test" someAttr="bla" ui-mask="999"></myInput>
финал по вызову: <div><input type="text" ng-model="test" someAttr="bla" ui-mask="999" /></div>

Но это не работает.
В консоли директива uiMask обвиняет, что ngModel нет.
Но в моей директиве ngModel установлено, потому что его нет в исходном HTML-коде, который создает пользователь.

Но в uiMask основной код находится в функции компиляции, и AngularJS сначала выполняет все функции компиляции. А затем предварительная ссылка, пост-ссылка и шаблон. независимо от приоритета (uiMask имеет приоритет 100, поэтому я попытался установить приоритет 110).

Итак, что я могу сделать, чтобы сначала отобразить шаблон моей директивы перед запуском uiMask? Так что моя директива может установить ngModel, который требуется для uiMask?

...