9

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;">  

AngularUI フレームワークから ieshiv.js を追加しました。
追加した

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

(質問: head セクションに追加するだけで十分ですか、それともコードを変更する必要がありますか?)

これも head セクションに追加しました。

<!--[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]-->  

そして、それはまったく機能しません。変数がロードされず、リストがレンダリングされず、Web サイトが機能していません。
Chrome、FF、Opera は正常に動作しています。

どこから始めるべきかヒントはありますか?

編集 1:
paste.bin の controller.js へのリンク
http://pastebin.com/z67qE9ME

EDIT 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:
それは奇妙です。最初のテンプレートを正しく読み込むことができました。すべての括弧 {{}} が正しく読み込まれています。
Ctrl に .resolve を追加しました。

// 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;
    }
};

奇妙なことは。(正しくレンダリングされた) テンプレートから、2 番目のテンプレートとルート (dealer/: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'
    });
}]);  

間違いが何であるか、またはどこにあるのか、誰にも手がかりがありますか?

4

2 に答える 2

2

プロジェクト Angular-UI には「IEShiv」という名前の「サブプロジェクト」が含まれており、IE で angular をスムーズに実行できます: https://github.com/angular-ui/angular-ui/tree/master/common/ieshiv

そこで言ったように、これだけが必要です:

<!--[if lte IE 8]> <script src="build/angular-ui-ieshiv.js"></script><![endif]-->
于 2013-05-27T16:56:53.010 に答える
0

IE(特に8)でこれらのタイプのエラーが発生するたびに、これら2つの問題のいずれかでした。

1) のようなカスタムタグを使用していましたが、使用して<auto-complete>いませんでしたdocument.createElement

id2)属性が重複している要素がありました。IEはこれが好きではありません。

テンプレートの問題を切り分けるには、通常、削除の方法が有効です。

于 2013-05-27T16:48:34.560 に答える