Angularjs:在IE11中不呈现JSON响应

时间:2015-05-13 09:57:15

标签: json angularjs internet-explorer-11

我在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" />

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

<!--[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不太熟悉。在此先感谢。

2 个答案:

答案 0 :(得分:0)

尝试下面的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>

答案 1 :(得分:0)

我意识到这个问题是在几年前被问到的,但我遇到了一个非常类似的问题,并且能够解决它。

IE11在文字文本中使用ng-repeat中的{{ value }}语法渲染值,而不是像你在问题中提到的那样呈现角度。迭代我的对象不是JSON,而只是一个正常的对象数组。

{{ value }}文本中检查DOM显示IE正在文本中间强制换行,因此它呈现为

{{

value }}

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