18

为了确定 AngularJS 是否可以在我需要的浏览器上运行,我制作了一个简单的数据绑定演示,它可以在 Firefox、Chrome 和 IE8+ 上正常运行,但我还需要让它在 IE7 上运行。不幸的是,我无法让它发挥作用。它只显示带有花括号的 html,忽略ng-属性。

我在 Internet Explorer 上查看了几篇 关于AngularJS的帖子 ,并在每一篇上都尝试了建议的修复,但在我的演示中没有任何效果。

这是我的演示的 HTML:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Angular IE7 Test</title>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<!--[if lt IE 9]>
<script type="text/javascript" src="angularjs/html5shiv.js"></script>
<![endif]-->
<!--[if lt IE 8]>
<script type="text/javascript" src="angularjs/json3.js"></script>
<![endif]-->
<script language="JavaScript" src="angularjs/angular.min.js"></script>
<script language="JavaScript" src="angularjs/test.js"></script>
</head>
<body class="ng-app">
    <div ng-controller="serversCtrl">
        <p>{{texto}}</p>

        <table border="1">
            <tbody>
                <tr><th>Col1</th><th>Col2</th><th>Col3</th></tr>
                <tr ng-repeat="item in items"><td>{{item.col1}}</td><td>{{item.col2}}</td><td>{{item.col3}}</td></tr>
            </tbody>
        </table>
    </div>
</body>
</html>

这是包含控制器和模型的 test.js javascript:

function serversCtrl($scope, $http, $location) {
    $scope.texto = "Texto dinamico";
    $scope.items = [
        {col1: "foo1", col2: "bar1", col3: "baz1"},
        {col1: "foo2", col2: "bar2", col3: "baz2"},
        {col1: "foo3", col2: "bar3", col3: "baz3"},
        {col1: "foo4", col2: "bar4", col3: "baz4"},
        {col1: "foo5", col2: "bar5", col3: "baz5"}
    ];
}

难道我做错了什么?是否有任何其他提示可以使它发挥作用,我错过了?

编辑:我正在使用 AngularJS v1.0.5

4

2 回答 2

62

1)添加id="ng-app"到您的身体标签。

<body ng-app="myApp" id="ng-app">

  2) 通知您的用户/客户现在是 2013 年。

于 2013-04-10T08:37:49.247 回答
19

经过更多的阅读,我可以使它工作。

IE7 的问题在于引导。它没有开火!所以我做了一个手动初始化,如本页所示,它起作用了。

这是我添加到 HTML 中的代码,确保它只会在 Internet Explorer 8 或更低版本上触发(因为如果我为所有浏览器触发它,一些事件处理程序会为非 ie 浏览器触发两次):

<!--[if lte IE 8]>
<script type="text/javascript">
    $(document).ready(function() {
        angular.bootstrap(document);
    });
</script>
<![endif]-->

$document.ready()部分是 jQuery 方法,以确保在加载正文上的所有内容时执行此代码,但由于我在我的网站上使用 jQuery,所以我利用了它。

于 2013-04-10T15:28:22.030 回答