10

Angular 1.3 ein neues debugInfoEnabled() Verfahren eingeführt, die eine Steigerung der Leistung liefern kann, wenn mit false im application config function genannt:debugInfoEnabled für Angular 1.2

myApp.config(['$compileProvider', function ($compileProvider) { 
    $compileProvider.debugInfoEnabled(false); 
}]); 

Auch Angular 1.3 fiel IE8-Unterstützung. Und das ist ein Problem für mich, meine Anwendung muss auf IE8 laufen. Daher kann ich nicht auf eckig 1.3 upgraden und muss mit 1.2 leben.

Gibt es eine Möglichkeit, die gleiche Funktionalität mit eckigen 1.2 zu erreichen?

Insbesondere zumindest ein Teil von dem, was debugInfoEnabled() tut:

  • verhindern Schaffung ng-scope/ng-isolated-scope CSS-Klassen während neue Bereiche
  • Erstellen Elemente nicht anhängen Bindungsdaten und ng-Klasse CSS-Klasse mit ngBind, ngBindHtml oder {{...}} Einschübe

Als einer möglichen Option, kann ich die AngularJS Repository Gabel und die Funktion wieder auf 1,2 zurückzuportieren. Verwenden Sie dann den Fork, der Aktualisierungen vom Upstream verwaltet.

Würde mich über alle Hinweise freuen.

+0

was ist die genaue Version der Winkel Sie verwenden? ist es 1.2.7 oder weniger als es –

+0

@pankajparkar versucht, mit dem neuesten '1.2. *' zu bleiben. Derzeit "1.2.28". Vielen Dank. – alecxe

+0

probiere app.config (function ($ logProvider) { $ logProvider.debugEnabled (true); }); Inside you app –

Antwort

5

Verwenden Sie die zugrunde liegende Methode DOM setAttribute, um das Standardverhalten zu verhindern. Ich habe die Plunker in der anderen Antwort bearbeitet:

http://plnkr.co/edit/cMar0d9IbalFxDA6AU3e?p=preview

Folgendes zu tun:

  • außer Kraft setzen es mit einem Scheck

    • Klon, der das DOM setAttribute Prototyp Methode für ng Debug-Attribute
    • Rückgabewert false für ng Debugattribute
    • Rückgabe wie üblich
    • se

    Verwenden Sie es wie folgt:

    /* Clone the original */ 
    HTMLElement.prototype.ngSetAttribute = HTMLElement.prototype.setAttribute; 
    
    /* Override the API */ 
    HTMLElement.prototype.setAttribute = function(foo, bar) { 
    /* Define ng attributes */ 
    var nglist = {"ng-binding": true, "ng-scope":true,"ng-class":true,"ng-isolated-scope":true}; 
    
    console.log([foo,bar]); 
    
    /* Block ng attributes; otherwise call the clone */ 
    if (nglist[foo]) 
        return false; 
    else if (JSON.stringify(nglist).match(foo)) 
        return false; 
    else 
        return this.ngSetAttribute(foo, bar); 
    } 
    

    ersetzen HTMLElement mit Element für IE8.

    Referenzen

  • 1

    Sie können versuchen, es zu deaktivieren, indem Sie $logProvider.debugEnabled(true); innerhalb Ihrer Winkelkonfiguration erwähnen. Um den Effekt der debugEnabled Einstellung zu erhalten, müssen Sie sicherstellen, dass während der Protokollierung $log Provider verwenden.

    Beispielcode

    var app = angular.module('myApp', []); 
    
    app.config(function($logProvider){ 
        $logProvider.debugEnabled(false); 
    }); 
    
    app.controller('MainCtrl', function($scope, $log) { 
        $scope.name = 'Hello World!'; 
        $scope.testModel = {name: "test"}; 
        //console.log('This will show log even if debugging is disable'); 
        $log.debug('TEST Log'); 
    }); 
    

    ist hier Fiddle

    Hoffentlich wird Ihnen helfen.

    +2

    Danke, aber ich denke, es würde [Debug-Log-Nachrichten nur ausschalten] (https://github.com/angular/angular.js/blob/d3b1f502e3099d91042a1827a006ad112ea67d36/src/ng/log.js#L54) .. – alecxe