For myself, I solved the problem of the so - add and display pop-ups when necessary without using a standard mechanism angular (specified for a message marker).
You can of course was immediately initialize the pop-up messages when loading data, but in my project it easier to implement on-demand.
//popup's store
$scope.popups = {};
$scope._setViewMarker = function(pId, showPopup){
var wp = $scope.waypoints;
wp[pId].icon.markerColor = 'red';
//set unselected markers color
for (var i in wp)
if(i != pId){
wp[i].icon.markerColor = 'blue';
};
// close other popups
for (var i in $scope.popups)
if(i != pId)
$scope.map.closePopup($scope.popups[i]);
// show or create poupap
if(showPopup)
if($scope.popups[pId] ){
if(!$scope.popups[pId]._isOpen)
$scope.map.openPopup($scope.popups[pId]);
} else {
var ind = $scope.points.map(function(e) { return e._id; }).indexOf(pId);
var c = angular.element('<popup point="points['+ind+']" note-click="showDetailPoint(points['+ind+'])"></popup>');
var linkFn = $compile(c);
var element = linkFn($scope);
$scope.popups[pId] = L.popup({offset:[0, -30]}).setLatLng( [wp[pId].lat, wp[pId].lng] ).setContent(element[0]).openOn($scope.map);
$scope.popups[pId].pointId = pId;
};
};
$scope.$on('leafletDirectiveMarker.viewMap.click', function(e, args){
$scope._setViewMarker(args.modelName, true);
});