First a minor note, the current version of UI-Bootstrap has changed the directive names. There is some backwards compatibility, but I've had issues just porting code over. The current directive name is uib-popover, not popover (the trigger and placement are still the same).
A directive runs in its own scope and while it will take objects, generally directive scopes have issues with functions (variables not at $rootScope, etc). You'd be better served by changing the data model a little, and having an element.fullText and a function for element.displayText.
The truly half-baked version goes something like this:
$scope.DisplayText = function(element){
if(hasEllipsis (element)){
return niceparsemethodhere;
}
return element.fullText;
}
Then you pass $scope.element.fullText to the uib-popover directive.
<td ng-repeat="item in myarray">{{DisplayText(item)}}
<span ng-if="hasEllipsis(item)" uib-popover="item.fullText" popover-placement="right" popover-trigger="mouseenter">...</span>
</td>
You can re-purpose this to model methods, but this is a fair rough draft.