【问题标题】:Angularjs: JSON response not rendering in IE11Angularjs:JSON 响应未在 IE11 中呈现
【发布时间】:2015-07-24 12:57:30
【问题描述】:

我在 IE11 中遇到了非常奇怪的问题。我正在使用 get 方法获取一些数据,该方法在 Chrome 和 Mozilla 中运行良好,但在 IE11 中却导致问题。

这是我的 HTML 标记:

<select multiple class="form-control" size="9" ng-model="form.selectedSrcObj.srcID" ng-change="getEnt()">
  <option value="{{f.id}}" ng-click="getEnt(f)" ng-repeat="f in fields" ng-selected="f.dflt_ind">
     {{f.nm}}
  </option>
</select>

在 IE11 中呈现如下:

{{f.nm}}
{{f.nm}}
{{f.nm}}
{{f.nm}}
{{f.nm}}
{{f.nm}}
{{f.nm}}

在 Chrome 和 Mozilla 中(如预期的那样):

File 1
File 2
File 3
File 4
File 5
File 6
File 7

最奇怪的是我在 IE11 控制台中看不到任何错误,当我检查 DOM 时,我可以看到如上所示的正确数据。我还可以在 IE11 的响应正文中看到整个 JSON 响应。

最初我认为这可能是 IE11 中的缓存问题(通过 Angularjs' $http.get only executed once in IE11 读取),我在标题中包含以下 META:

<meta http-equiv="cache-control" content="no-cache" />

但这也行不通。然后我尝试包含以下 polyfill,但也不起作用:

<!--[if gte IE 8]>
<script src="https://oss.maxcdn.com/html5shiv/3.7.2/html5shiv.min.js"></script>
<script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
<script src="http://cdnjs.cloudflare.com/ajax/libs/json3/3.3.2/json3.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/angular-ui/0.4.0/angular-ui-ieshiv.min.js"></script>
<script src="https://github.com/remy/polyfills/blob/master/EventSource.js"></script>
<![endif]-->

请告诉我可能是什么原因以及如何解决它。我不太擅长 AngularJS。提前致谢。

【问题讨论】:

标签: json angularjs internet-explorer-11


【解决方案1】:

尝试像下面这样的 bindonce,

<select bindonce multiple class="form-control" size="9" ng- model="form.selectedSrcObj.srcID" ng-change="getEnt()">
<option value="{{f.id}}" ng-click="getEnt(f)" ng-repeat="f in fields" ng-   selected="f.dflt_ind"  bo-text="f.nm">
</option>
</select>

【讨论】:

  • 我试过 bindonce 但没有用。这真的很奇怪,因为在控制台中看不到任何错误。但在响应正文中,我可以看到整个 JSON 数组。
【解决方案2】:

我知道几年前有人问过这个问题,但我刚刚遇到了一个非常相似的问题,并且能够解决它。

IE11 正在以文字文本的 ng-repeat 中呈现 {{ value }} 语法中的值,而不是像您在问题中提到的那样正常呈现它。我被迭代的对象不是 JSON,而是一个普通的对象数组。

检查 {{ value }} 文本处的 DOM 发现 IE 强制在文本中间换行,因此它呈现为

{{

value }}

有一个简单的修复方法:删除 {{ value }} 并将其替换为元素上的 ng-bind="value"。但我仍然不明白 IE 以这种方式呈现它的根本原因。希望这对某人有帮助!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-07
    • 1970-01-01
    • 2019-10-29
    • 2018-11-23
    相关资源
    最近更新 更多