Two possible approaches can be taken to address this issue. The first option involves moving the inner content into a script and rendering it in two different places:
<script type="text/ng-template" id="main-content.html">
<div>...your inner content</div>
</script>
<a ng-if="price" data-ng-click="selected(price)">
<div ng-include="'main-content.html'"></div>
</a>
<div ng-if="!price" ng-include="'main-content.html'"></div>
The second approach involves using CSS to make the content non-clickable:
<a ng-class="{no-price: !price}" data-ng-click="selected(price)">
<div>
...
</div>
</a>
In your CSS file, you would have:
a.no-price, a.no-price:hover, a.no-price:visited, a.no-price:focus {
color: black; // normal color
pointer-events: none; // no clickable
text-decoration: none; // No link feel
}