Подтвердить что ты не робот

Запуск приложения AngularJS в Internet Explorer 7

Чтобы убедиться, что AngularJS работает в браузерах, в которых я нуждаюсь, я сделал простую демонстрацию данных, которая отлично работает на Firefox, Chrome - на IE8 +, но мне также нужно заставить ее работать на IE7. К несчастью, я не могу заставить его работать над этим. Он показывает только html с фигурными фигурными скобками на нем, игнорируя атрибуты ng-.

Я проверил несколько сообщений о AngularJS в Internet Explorer и пробовал предлагаемые исправления для каждого, но ничего не работает в моей демонстрации.

Это HTML-код моей демонстрации:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Angular IE7 Test</title>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<!--[if lt IE 9]>
<script type="text/javascript" src="angularjs/html5shiv.js"></script>
<![endif]-->
<!--[if lt IE 8]>
<script type="text/javascript" src="angularjs/json3.js"></script>
<![endif]-->
<script language="JavaScript" src="angularjs/angular.min.js"></script>
<script language="JavaScript" src="angularjs/test.js"></script>
</head>
<body class="ng-app">
    <div ng-controller="serversCtrl">
        <p>{{texto}}</p>

        <table border="1">
            <tbody>
                <tr><th>Col1</th><th>Col2</th><th>Col3</th></tr>
                <tr ng-repeat="item in items"><td>{{item.col1}}</td><td>{{item.col2}}</td><td>{{item.col3}}</td></tr>
            </tbody>
        </table>
    </div>
</body>
</html>

И это javascript test.js, содержащий контроллер и модели:

function serversCtrl($scope, $http, $location) {
    $scope.texto = "Texto dinamico";
    $scope.items = [
        {col1: "foo1", col2: "bar1", col3: "baz1"},
        {col1: "foo2", col2: "bar2", col3: "baz2"},
        {col1: "foo3", col2: "bar3", col3: "baz3"},
        {col1: "foo4", col2: "bar4", col3: "baz4"},
        {col1: "foo5", col2: "bar5", col3: "baz5"}
    ];
}

Я что-то делаю неправильно? Есть ли другой совет, чтобы он работал, что я пропустил?

EDIT: Я использую AngularJS v1.0.5

4b9b3361

Ответ 1

После некоторого большего чтения я мог бы заставить его работать.

Проблема с IE7 была начальной загрузкой. Он не стрелял! поэтому я сделал ручную инициализацию, как показано на этой странице, и это сработало.

Это код, который я добавил в HTML, убеждая, что он будет запускаться только в Internet Explorer 8 или ниже (потому что, если я его запускаю для всех браузеров, некоторые обработчики событий запускают дважды для браузеров, отличных от ie):

<!--[if lte IE 8]>
<script type="text/javascript">
    $(document).ready(function() {
        angular.bootstrap(document);
    });
</script>
<![endif]-->

Часть $document.ready() - это способ jQuery, чтобы убедиться, что этот код будет выполнен, когда все на теле загружено, но поскольку я использовал jQuery на своем сайте, я воспользовался им.

Ответ 2

1) Добавьте id="ng-app" в свой тег тела.

<body ng-app="myApp" id="ng-app">

  2) Сообщите своим пользователям/клиенту о нем в 2013 году.