페이지의 아무 곳이나 클릭하면 딸깍 소리가 나면서 열리는 작은 팝업을 표시해야합니다.콘텐츠를 얻을 수 없습니다. ngrepeat 내부에 AngularJs 동적 팝업이 있습니다.
그러나이 요구 사항과 일치하는 plunker (http://plnkr.co/edit/K7cYQSDEBS3cHvDfJNLI?p=preview)가 발견되어 ng-repeat에서 작동하지 않습니다.
여러 답변과 플 런커 예제를 보았지만 작동시키지 못했습니다. 여기
는<div ng-controller="TestController">
<div class="row" style="background-color: #ebebeb !Important; ">
<div style="text-align:center">
<table style="width:100% !important;">
<tr ng-repeat="member in TeamMembers" style="font-size:18px !important; height: 108px;">
<td style="display:block;margin-top:30px;text-align:left;"> {{member.FirstName}} {{member.LastName}} <i class="fa fa-info-circle" aria-hidden="true" ng-show="member.Description != null" popover-template="dynamicPopover.templateUrl" popover-placement="bottom" popover-elem descr="{{member.Description}}"></i></td>
</tr>
</table>
</div>
</div>
...
<script type="text/ng-template" id="descriptionModal.html">
<div class="adp-info-dialog">
<div class="modal-body">
<div class="row">
<div class="col-md-8 col-md-offset-1">
<div class="form-group">
<label class="fieldset-label">Test {{ dynamicPopover.descr }}</label>
</div>
</div>
</div>
</div>
</div>
</script>
여기
는 JS
testApp.controller('TestController', function ($scope, $rootScope, $log, $modal, SiebelAccountTeamService, $filter, $element) {
$scope.dynamicPopover = {
templateUrl: 'descriptionModal.html',
descr: null
};
var result = TestService.GetTeamMembers();
result.then(function (data) {
$scope.TeamMembers = data.data;
}, function (e) {
console.log(e);
}).finally(function() {
$scope.CompleteLoading();
});
}) 내 HTML이고;
testApp.directive('popoverClose', function ($timeout) {
return {
scope: {
excludeClass: '@'
},
link: function (scope, element, attrs) {
var trigger = document.getElementsByClassName('trigger');
function closeTrigger(i) {
$timeout(function() {
angular.element(trigger[0]).triggerHandler('click').removeClass('trigger');
});
}
element.on('click', function (event) {
var etarget = angular.element(event.target);
var tlength = trigger.length;
if (!etarget.hasClass('trigger') && !etarget.hasClass(scope.excludeClass)) {
for (var i = 0; i < tlength; i++) {
closeTrigger(i)
}
}
});
}
};
});
testApp.directive('popoverElem', function() {
return {
scope: {
descr: '@'
},
link: function (scope, element, attrs) {
$scope.dynamicPopover.descr = scope.descr,
alert($scope.dynamicPopover.descr),
element.on('click', function() {
element.addClass('trigger');
});
}
};
});
감사합니다.
Plunker를 제공하지 않은 것에 대해 사과드립니다. 이 지시어에 추가하여이 작업을 할 수있었습니다. 범위. $ parent.dynamicPopover.descr = scope.descr; 그러나 콘텐츠를 표시하는 동안 콘텐츠는 데이터를 기반으로 한 변경 사항으로 변경되지 않습니다. 그것은 마지막 내용을 집어 들고 그 내용을 계속 보여줍니다. – codelearner
@codelearner 문제 없습니다! 이게 문제를 해결합니까? –
불행히도 - ng-repeat의 데이터를 기반으로 콘텐츠가 변경되지 않습니다. 마지막 항목의 값은 팝업에 표시되는 값입니다. – codelearner