2013-08-23 2 views
0

Angular JS docs говорят, что директива ngRepeat должна установить переменную $ index в индекс элемента в массиве. Это отлично работает в Chrome и IE 10, но IE 9 показывает «{{$ index}}» вместо номера. Вот небольшой пример:

<!DOCTYPE html> 
<html> 
<head> 
    <meta charset="utf-8"> 
    <title>Host Parameters</title> 
    <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/angularjs/1.0.7/angular.js"></script> 
    <style> 
     .host-param-table { 
      border-collapse: collapse; 
     } 
     .host-param-table td, .host-param-table th { 
      border: 1px solid gray; 
      text-align:center; 
      padding: 2px; 
      font-size: 15px; 
      font-family: Arial; 
     } 
    </style> 
</head> 
<body id="ng-app" data-ng-app> 
<div data-ng-controller="HostParametersCtrl"> 
    <table class="host-param-table"> 
     <tr> 
      <th>Name</th> 
      <th>Index</th> 
      <th>On</th> 
      <th>Value (Hex)</th> 
      <th>Value (Output)</th> 
     </tr> 
     <tr data-ng-repeat="p in params"> 
      <td>{{p.name}}</td> 
      <td>{{$index}}</td> 
      <td><input data-ng-model="p.isEnabled" type="checkbox" /></td> 
      <td><input data-ng-model="p.value" data-ng-disabled="!p.isEnabled" type="text" /></td> 
      <td>0x{{p.value}}</td> 
     </tr> 
    </table> 
</div> 

<script type="text/javascript"> 
    function HostParametersCtrl($scope) { 
     $scope.params = [ 
      { 'isEnabled': false, 'name': 'First', 'value': '' }, 
      { 'isEnabled': false, 'name': 'Second', 'value': '' }, 
      { 'isEnabled': false, 'name': 'Third', 'value': '' }, 
      { 'isEnabled': false, 'name': 'Fourth', 'value': '' }, 
      { 'isEnabled': false, 'name': 'Fifth', 'value': '' }, 
      { 'isEnabled': false, 'name': 'Sixth', 'value': '' }, 
      { 'isEnabled': false, 'name': 'Seventh', 'value': '' } 
     ]; 

    } 
</script> 
</body> 
</html> 

Рассматриваемый в Chrome 29:

Chrome

Рассматриваемый в IE 9:

Internet Exploiter 9

Обратите внимание, что флажки отключить входы, как ожидалось , Это просто индекс, который сломан. Сегодня мой первый день, используя Angular JS, поэтому я надеюсь, что есть что-то простое, что я забыл, и это легко исправить. Что я делаю не так?

+0

Угловая работа на всех в IE? Вы видите p.name? – BoxerBucks

+0

@BoxerBucks Связывание, похоже, работает, но переменная индекса $ нет. Вот почему я думаю, что я сделал что-то неправильно. Сначала ничего не работало, но добавление 'id =" ng-app "' исправляло большую часть его. http://docs.angularjs.org/guide/ie – styfle

+0

Это, наверное, проблема начальной загрузки ... я использовал $ index и работал над IE7 ... Можете ли вы предоставить нам плункер или скрипку? – Galdo

ответ

1

Я создал plunkr с вашим кодом здесь: http://plnkr.co/edit/ajHZ04yqnBmKHUicWmgb?p=preview - Я немного изменил его.

Когда я просматриваю эту же кодовую базу на своем локальном ПК с помощью IE, она работает аналогично в IE8, 9 и 10. Она не запускается вообще в IE7.

К сожалению, я не думаю, что plunkr поддерживает IE8 или 9, поэтому просто вставьте код в свой файл и посмотрите, не изменилось ли оно.

+0

Ну, это странно. IE 8 на другом компьютере отображается правильно (как мой исходный код, так и ваш код). Возможно ли, что устаревшая версия IE 8 или 9 может пропустить некоторое критическое обновление? – styfle

+0

idk .. возможно. Используйте инструменты разработчика и убедитесь, что он не попадает в другой режим из-за настройки безопасности или чего-то еще. – BoxerBucks

Смежные вопросы