Я использую angular -ui-bootstrap в своем текущем проекте, и у меня есть требование для popover, которое позволит пользователю предпринять некоторые действия данный элемент (переименование/редактирование/удаление/etc...). Поскольку angular -ui bootstrap popover не позволяет настраивать html или привязку данных по умолчанию, я скопировал их tooltip/popover .provider
и .directive
, чтобы настроить его на мои нужды.
Основная проблема: привязки ng-click теряются после закрытия и повторного открытия всплывающего окна.
Дополнительная проблема. Можно ли настроить двустороннюю привязку данных, чтобы мне не пришлось вручную устанавливать scope.$parent.$parent.item
?
Plunker: http://plnkr.co/edit/HP7lZt?p=preview
Чтобы посмотреть, какие изменения были внесены в оригинальный tooltip.js
:
- Popover
.directive
- это то, что было изменено больше всего:
.directive('iantooltipPopup', function () {
return {
restrict: 'E',
replace: true,
scope: { mediaid: '@', title: '=', content: '@', placement: '@', animation: '&', isOpen: '&' },
templateUrl: 'popover.html',
link: function (scope, element, attrs) {
scope.showForm = false;
scope.onRenameClick = function () {
console.log('onRenameClick()');
scope.showForm = true;
};
scope.onDoneClick = function () {
console.log('Title was changed to: ' + scope.title);
scope.showForm = false;
scope.$parent.$parent.item.title = scope.title;
scope.$parent.hide();
};
}
};
})
- Всплывающая подсказка
.provider
была изменена здесь, чтобы получить двустороннюю привязку для работы в полеtitle
:
var template =
'<'+ directiveName +'-popup '+
// removed
// 'title="'+startSym+'tt_title'+endSym+'" '+
'title="tt_title" ' +
'content="'+startSym+'tt_content'+endSym+'" '+
'placement="'+startSym+'tt_placement'+endSym+'" '+
'animation="tt_animation()" '+
'is-open="tt_isOpen"'+
'>'+
'</'+ directiveName +'-popup>';
Я ценю любую помощь, я считаю, что скомпилированные директивы и провайдеры, похоже, являются большими умственными препятствиями, когда начинаются с Angular. Я пытаюсь выяснить и управлять этой директивой, чтобы я мог учиться у нее, так же, как и сам компонент.