I have also been struggling with IE7 and IE6 compatibility, and have discovered that using angularjs version 1.1.5 instead of 1.2.25 prevents the error you describe.
Whether angular is usable in IE6 and IE7 beyond this simple example is another matter.
The code below has been tested in IE6,7,8,9,11 on a domain with compatibility mode set to ON.
I assume many parts of the example can be omitted. I am just starting out with angular, so cannot guarantee best practices are used. It should at least provide a starting point.
<!DOCTYPE html>
<html class="ng-app:phonecatApp" ng-app="phonecatApp" id="ng-app" xmlns:ng="http://angularjs.org" lang="en">
<head>
<meta http-equiv="X-UA-Compatible" content="IE=EDGE; IE=9; IE=8; IE=7" />
<meta charset="utf-8">
<title>My HTML File</title>
<link rel="stylesheet" href="../stylesheets/html5.css">
<!--[if lte IE 7]>
<script src="../Includes/Client/JS/json2.js"></script>
<![endif]-->
<!--[if lte IE 9]>
<script type="text/javascript" src="es5-shim-4.0.3-min.js"></script>
<![endif]-->
<script type="text/javascript" src="html5shiv.min.js"></script>
<script type="text/javascript" src="angular-1.1.x.js"></script>
<script type="text/javascript">
var phonecatApp = angular.module('phonecatApp', []);
phonecatApp.controller('PhoneListCtrl', function ($scope) {
$scope.phones = [
{'name': 'Nexus S',
'snippet': 'Fast just got faster with Nexus S.'},
{'name': 'Motorola XOOM™ with Wi-Fi',
'snippet': 'The Next, Next Generation tablet.'},
{'name': 'MOTOROLA XOOM™',
'snippet': 'The Next, Next Generation tablet.'}
];
});
</script>
</head>
<body ng-controller="PhoneListCtrl">
<ul>
<li ng-repeat="phone in phones">
{{phone.name}}
<p>{{phone.snippet}}</p>
</li>
</ul>
</body>