0

我使用 AngularJS 开发了一个网页,并在开发过程中使用 Google Chrome 对其进行了测试。Everythinh 在 Chrome 中应该可以正常工作,但现在我也在 Internet Explorer 9 中对其进行了测试,但我遇到了一个大问题。我有一个 ng-repeat 根据他们所属的类别显示具有不同 html 的人。为了能够显示每个人的不同布局,我使用以下代码:

html代码

<ul class="listview image" >
    <ng:include src="getIncludeFile(profile)" data-ng-repeat="profile in profiles"></ng:include>
</ul>

Javascript

$scope.getIncludeFile = function(profile) {
        switch (profile.Age) {
            case "Child":
                return 'Child.html'; break;
            case "Elder":
                return 'Elder.html'; break;
            default:
                return 'Adult.html';
        }
    }

我已经阅读了角度文档,并且在我的主 html 页面顶部有以下内容:

<!DOCTYPE html>
<html xmlns:ng="http://angularjs.org" class="ng-app:app" id="ng-app" lang="en" ng-app="app" ng-controller="appController">

我在模板中放什么并不重要,它永远不会在 IE 中显示。正确数量的 ng-includes 出现在 DOM 中,所以我认为问题不在于 ng-repeat。我在互联网上没有发现任何类似的问题,所以我问你是否有人知道可能是什么问题?

4

3 回答 3

0

对于 IE8+,将 ng-include 保存在单独的 div 中,例如:

<ul class="listview image" >
    <div data-ng-repeat="profile in profiles">
        <ng:include src="getIncludeFile(profile)"></ng:include>
    </div>      
</ul>

您可以通过禁用 $sce 使其在 IE7 中工作,因为 ngInclude 使用 $sce。

于 2014-02-28T11:20:54.890 回答
0

尝试将其更改为:

<div ng-include="getIncludeFile(profile)" data-ng-repeat="profile in profiles"></div>

您正在尝试使用现代浏览器可以识别的标签,但 IE9 及以下版本不能识别,尤其是在标签名称中使用冒号。
如果您想真正安全地玩它,请data-在所有内容前面使用前缀。您还可以在 IE9 及以下版本的条件 HTML 语句中使用 HTML5 Shiv 以继续安全运行。

于 2013-05-24T07:22:53.360 回答
0

这是我解决您问题的尝试..

可编辑版本.. http://plnkr.co/edit/4PmbuLYYFLNwi6mRFaRP

以窗口模式打开它,然后在 IE9 中使用 url 进行测试运行。

希望这可以帮助..

于 2013-05-24T17:44:02.890 回答