У меня есть такая директива:
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?