ng-repeat 中 IE 下拉列表中的 Angularjs 無法正確呈現 (Angularjs in IE dropdowns in ng-repeat do not render correctly)


問題描述

ng‑repeat 中 IE 下拉列表中的 Angularjs 無法正確呈現 (Angularjs in IE dropdowns in ng‑repeat do not render correctly)

我有一個組件列表,每個組件都有一個下拉(或 select)控件。我使用 ng‑repeat 渲染這些組件。它在 Chrome 和 Firefox 中運行良好,但在 IE10 中卻不行。在 IE10 中,如果我有以下內容:

<select ng‑model="selection.selected_id">
  <option value="" ng‑selected="!selection.selected_id" ng‑hide="selection.selected_id">
    Select one
  </option>
  <option ng‑repeat="option in options" 
              ng‑selected="option.id === selection.selected_id"
              value="{{option.id}}">
    {{option.name}}
  </option>
</select>

最初我可以在下拉列表中看到 {{option.name}}。只有當我實際單擊下拉列表時,才會呈現正確的值。調查 DOM,我可以在 HTML 中看到正確的值,似乎 IE 本身無法正確呈現它們。 如果選擇不在 ng‑repeat 本身內,那很好! 這是一個示例 jsfiddle,在 Chrome 中運行它(工作正常),然後在 IE10 中運行(不起作用)。我正在使用最新的 angular (1.5.1)。 有解決辦法嗎?謝謝。


參考解法

方法 1:

it works fine in IE 11

not very sure about the problem but yes data‑ng‑bind is always better option than using {{}}

and

try with ng‑options in select tag. it should work as already tested on IE10 please refer https://docs.angularjs.org/api/ng/directive/ngOptions

方法 2:

You can try this directive. I use this to fix ng‑options issue on IE9‑IE10

.directive('fixCrappyIeSelect', function () {
       return {
            restrict: 'A',
            scope: {
                options: '=fixCrappyIeSelect'
            },
            controller: ['$scope', '$element', function ($scope, $element) {
                $scope.$watch('options', function () {
                    $element.hide();
                    $element.show();
                });
            }]
        };
    });

Hope this will help you

(by Daniel GruszczykAnkur SoniPterrat)

參考文件

  1. Angularjs in IE dropdowns in ng‑repeat do not render correctly (CC BY‑SA 2.5/3.0/4.0)

#ng-repeat #angularjs #internet-explorer






相關問題

ng-repeat 加載後不顯示表行 (ng-repeat not showing table rows after loading)

僅在 ng-repeat 中將 ng-if 應用於所選項目 (Apply ng-if in ng-repeat only to selected item)

AngularJS:獲取複雜過濾數組的大小 (AngularJS: Get size of complex filtered array)

單擊時更改 ng-class(嵌套 ng-repeat) (Changing ng-class when clicked (nested ng-repeat))

帶有選擇/選項下拉框的嵌套 ng-repeat 問題 (Nested ng-repeat issue with select/options drop down box)

錯誤:[ngRepeat:dupes] 不允許在轉發器中重複。使用“track by”表達式指定唯一鍵 (Error: [ngRepeat:dupes] Duplicates in a repeater are not allowed. Use 'track by' expression to specify unique keys)

在 AngularJS 中保存在 ng-repeat 中生成的字段 (Saving a field generated in ng-repeat in AngularJS)

遍歷對像數組以構建 div 結構 (Iterate over array of object to build a div structure)

ng-repeat 中 IE 下拉列表中的 Angularjs 無法正確呈現 (Angularjs in IE dropdowns in ng-repeat do not render correctly)

動態 ng-repeat 表單的優雅解決方案 (Elegant solution for a dynamic ng-repeat form)

如何區分 Rs 和 % 值? (How to differentiate Rs and % values?)

難以為一組對象運行 ng-repeat (difficulty running ng-repeat for an array of objects)







留言討論