2015-01-05 16 views
10

angolare 1.3 introdotto un nuovo metodo di debugInfoEnabled() in grado di fornire una spinta in termini di prestazioni, se chiamato con false nel application config function:debugInfoEnabled per angolare 1.2

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

Inoltre, angolare 1.3 abbandonato il supporto IE8. E questo è un problema per me, la mia applicazione deve essere eseguita su IE8. Quindi, non posso aggiornare a angular 1.3 e devo convivere con 1.2.

C'è un modo per ottenere la stessa funzionalità con 1,2 angolare?

In particolare, almeno una parte di ciò che debugInfoEnabled() fa:

  • impedire la creazione di ng-scope/ng-isolated-scope classi CSS durante la creazione di nuovi ambiti
  • non collegare i dati vincolanti e classe CSS ng classe agli elementi con ngBind, ngBindHtml o {{...}} interpolazioni

come una possibile opzione, posso sborsare il repository angularjs e backport la funzione di nuovo a 1.2. Quindi, utilizzare il fork mantenendo gli aggiornamenti dall'upstream.

Apprezzerebbero qualsiasi suggerimento.

+0

qual è l'esatta versione del angolare che si sta utilizzando? è 1.2.7 o inferiore a quello –

+0

@pankajparkar che prova ad attaccare con l'ultimo '1.2. *'. Attualmente '1.2.28'. Grazie. – alecxe

+0

try app.config (function ($ logProvider) { $ logProvider.debugEnabled (true); }); all'interno dell'app –

risposta

5

Utilizzare il metodo DOM setAttribute sottostante per impedire il comportamento predefinito. Ho modificato il plunker in altra risposta:

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

per effettuare le seguenti operazioni:

  • Clone il metodo prototipo DOM setAttribute
  • Override con un assegno per gli attributi di debug ng
  • Restituisci false per ng attributi di debug
  • Restituisce normalmente otherwi SE

usarlo come segue:

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

Sostituire HTMLElement con Element per IE8.

Riferimenti

1

È possibile provare a disattivarlo citando $logProvider.debugEnabled(true); all'interno della configurazione angolare. Per ottenere l'effetto dell'impostazione debugEnabled, è necessario assicurarsi che durante il log venga utilizzato il provider $log.

codice di esempio

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'); 
}); 

Ecco Fiddle

Speriamo che questo vi aiuterà.

+2

Grazie, ma penso che [Disattiva solo i messaggi di registro di debug] (https://github.com/angular/angular.js/blob/d3b1f502e3099d91042a1827a006ad112ea67d36/src/ng/log.js#L54) .. – alecxe