EDIT:
я, наконец, нашел решение. Это немного сложно, но это работает. Вот директива:
app.directive("autoOpen", ["$parse", function($parse) {
return {
link: function(scope, iElement, iAttrs) {
var isolatedScope = iElement.isolateScope();
iElement.on("focus", function() {
isolatedScope.$apply(function() {
$parse("isOpen").assign(isolatedScope, "true");
});
});
}
};
}]);
И это мнение:
<input type="text" datepicker-popup="" ng-model="ctrl.dt" auto-open />
Это старшее решение:
Вы можете написать директиву, чтобы изменить значение is-open
, когда вход фокусирует :
app.directive("autoOpen", ["$parse", function($parse) {
return {
link: function(scope, iElement, iAttrs) {
var isOpenVarName = iAttrs.isOpen;
iElement.on("focus", function() {
$scope.$apply(function() {
$parse(isOpenVarName).assign(scope, "true");
});
});
}
};
}]);
и он РЗ вид:
<input type="text" datepicker-popup="" auto-open is-open="open" ng-model="ctrl.dt" />
Обратите внимание, что вы должны определить open
в контроллере и поместить is-open="open"
в элемент ввода. Я знаю, что это не лучшее решение. Я сделаю это лучше, как только найду лучшее решение.
Обновление: Как упоминалось в комментариях в Akos-lukacs, это решение не работает при отключении данных отладки в угловом режиме. Ответ
Я попробую, спасибо !. ... Один недостаток заключается в том, что вы помещаете в область «открытый» флаг, он должен быть массивом для каждого dtp, доступного в ui, поэтому каждый имеет свой собственный флаг. –
@KatLimRuiz Вы были правы. Я не мог найти идеальное решение, но сделал его лучше! – alisabzevari
Фактически это прерывается, если вы отключите данные отладки https://docs.angularjs.org/guide/production#disabling-debug-data 'element.scope()' и 'element.isolateScope()' перестает работать в режиме "production" , В моем случае просто вернул 'undefined'. –