AngularJS和Internet Explorer(AngularJS and Internet

2019-08-07 19:43发布

我有一个获得在Internet Explorer 7和8和9连我的应用程序加载问题。

我收到以下错误消息(控制台)

Uncaught TypeError: Cannot read property 'nodeName' of undefined   

在加载{{}}变量是装载和消失。 什么也没有呈现。
我已将此添加到HTML标签:

<html xmlns="http://www.w3.org/1999/xhtml" xmlns:fb="http://www.facebook.com/2008/fbml" xmlns:ng="http://angularjs.org" id="ng-app" class="ng-app: myapp;">  

我加ieshiv.js从AngularUI框架。
我加

<!--[if lt IE 8]>
     <script src="files/js/json3.min.js"></script>
<![endif]-->  

(问:这是不够的,只是增加了我的头节或我也必须修改我的代码?)

我也添加到了我的头部分:

<!--[if lte IE 8]>
      <script>
        document.createElement('ng-include');
        document.createElement('ng-pluralize');
        document.createElement('ng-view');
        document.createElement('slide');
        document.createElement('carousel');

        // Optionally these for CSS
        document.createElement('ng:include');
        document.createElement('ng:pluralize');
        document.createElement('ng:view');
      </script>
    <![endif]-->  

而且它不会在所有的工作。 没有变量被加载,而不是名单提供,而该网站无法正常运作。
铬,FF和Opera都工作正常。

你有任何提示从哪里开始?

编辑1:
链接到我的paste.bin controller.js
http://pastebin.com/z67qE9ME

编辑2:
它是也许是JS的加载顺序?

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.8.18/jquery-ui.min.js"></script>
<!--[if lt IE 8]>
     <script src="files/js/json3.min.js"></script>
<![endif]-->
<script src="files/js/angular.min.js"></script>
<script src="files/js/ui-bootstrap-tpls-0.1.0-SNAPSHOT.js"></script>
<script src="files/js/angular-ui.js"></script>
<script src="files/js/angular-resource.min.js"></script>
<script src="files/js/controller.js"></script>
<script src="files/js/select2.js"></script>
<script src="files/js/main.js"></script>  

编辑3:
好吧,我加入fauxconsole.js给我的脚本和清理的代码和它的工作。 嗯,至少它是正确加载(没有任何CSS校正)。 不过,这并不在我的一些标记加载内嵌样式。 你有一个想法,为什么?

<a ng-click="details.show=toggle(marker)" ng-class="{active_marker: active_marker.show == marker.id}" href="#/dealer/{{marker.id}}" class="marker" style="left:{{marker.coordleft}}px;top:{{marker.coordtop}}px">
</a></div>  

编辑4:
编辑3也解决了这里此帮助:
https://groups.google.com/d/msg/angular/0zHsVuUryKI/ckTvY93NcRsJ

但我现在有一个其他问题。 在IE 8和下面的路径模板不渲染。 我只看到{{}}变量,而不是更多。

编辑5:
这很奇怪。 我设法装入第一模板权利。 所有括号{{}}正确装入。
我加.resolve我的Ctrl键:

// DealerDetailsCtrl
function DealerDetailsCtrl($scope, $rootScope, $routeParams, dealerService, datasets) {
    $scope.loading = true;
    // Abfrage
    $rootScope.dealerdetails = datasets;
    // inline styles fuer positionierung laden
    $rootScope.itemStyle2 = function (item) {
        return { left: item.divleft * 1 + 390 + 'px', top: item.divtop * 1 + 160 + 'px'};
    };
    //Feedback zur Message zurruecksetzen
    $scope.issend = $rootScope.issend;
    $rootScope.issend = false;
    $scope.loading = false;
    //Close Button
    $rootScope.close = function() {
        $rootScope.marker = null;
        $rootScope.details = {show: false};
        $rootScope.alldealer = {show: false};
        $rootScope.active_marker = null;
    };
    $rootScope.$on("$routeChangeStart", function (event, next, current) {
        $scope.loading = true;
    });

}
DealerDetailsCtrl.resolve = {
    datasets : function($q, $http, $route, $rootScope) {
        var deferred = $q.defer();

        $http.get('files/framework/dealer/'+ $route.current.params.id +'/' + $rootScope.token).success(function(data) {
            deferred.resolve(data);
        });

        return deferred.promise;
    }
};

奇怪的是。 从(正确呈现)的模板,我链接到第二个模板和路由(从经销商/:id来/ dealermessage /:ID),但是这条路线(一切是一样的,包括解析)不正确加载,相同错误之前相比,模板不会被渲染。

路线:

app.config(['$routeProvider', function($routeProvider) {
    $routeProvider.
    when('/dealer/:id', {
        templateUrl: 'files/tpl/dealer-details.html?333',
        controller: 'DealerDetailsCtrl',
        activetab: 'details',
        resolve: DealerDetailsCtrl.resolve
    }).
    when('/dealermessage/:id', {
        templateUrl: 'files/tpl/dealer-message.html?222',
        controller: 'DealerMessageCtrl',
        activetab: 'message',
        resolve: DealerMessageCtrl.resolve
    }).
    when('/dealersendmessage/:id', {
        templateUrl: 'files/tpl/dealer-details.html?444',
        controller: 'DealerDetailsCtrl',
        activetab: 'details',
        resolve: DealerDetailsCtrl.resolve
    }).
    otherwise({
        redirectTo: '/dealer'
    });
}]);  

有没有人有一个线索,什么或者错误可能是什么?

Answer 1:

该项目角UI包含一个“子项目”命名为“IEShiv”,它应该让你在IE下运行的角度顺利: https://github.com/angular-ui/angular-ui/tree/master/common/ieshiv

由于有说,你只需要这样的:

<!--[if lte IE 8]> <script src="build/angular-ui-ieshiv.js"></script><![endif]-->


Answer 2:

每当我在IE中得到了这些类型的错误(特别是8),这是这些2个问题的任何一个。

1)I用如自定义标签<auto-complete>和未使用document.createElement

2)我有重复元素id属性。 IE不喜欢这样。

消除方法正常工作对我来说,在模板中隔离问题。



文章来源: AngularJS and Internet Explorer