2015-01-05 26 views
10

Kątowymi 1.3 wprowadził nową debugInfoEnabled() metodę, która może zapewnić wzrost wydajności, jeśli wywołana false w application config function:debugInfoEnabled dla Kątowymi 1.2

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

Również kątowa 1,3 zaprzestał wspierania IE8. I to jest dla mnie problem, moja aplikacja musi działać na IE8. Dlatego nie mogę uaktualnić do kąta 1.3 i musieć żyć z 1.2.

Czy istnieje sposób na osiągnięcie tej samej funkcjonalności przy pomocy kątowej 1,2?

W szczególności, przynajmniej część tego, co debugInfoEnabled() robi:

  • zapobiec tworzeniu ng-scope/ng-isolated-scope klas CSS przy tworzeniu nowych zakresów
  • nie przywiązują wiążące dane i ng klasy klasę CSS do elementów z ngBind, ngBindHtml lub {{...}} interpolacji

jako jeden z możliwych opcji, mogę widelca angularjs repozytorium backport funkcji powrotem do 1,2. Następnie użyj widelca utrzymującego aktualizacje od góry.

Byłbym wdzięczny za wszelkie wskazówki.

+0

jaka jest dokładna wersja kątowa używasz? jest to 1.2.7 lub mniej niż –

+0

@pankajparkar próbujący trzymać się najnowszego '1.2. *'. Obecnie "1.2.28". Dzięki. – alecxe

+0

wypróbuj app.config (funkcja ($ logProvider) { $ logProvider.debugEnabled (true); }); wewnątrz ciebie aplikacja –

Odpowiedz

5

Użyj domyślnej metody DOM setAttribute, aby zapobiec domyślnemu zachowaniu. Mam redagował plunker w drugiej odpowiedzi:

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

wykonać następujące czynności:

  • sklonować metoda prototyp DOM setAttribute
  • nadpisać z czekiem na atrybuty ng debug
  • Powrót false dla ng atrybutów debugowania
  • Powrót jak zwykle inne se

Użyj go w następujący sposób:

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

Wymień HTMLElement z Element dla IE8.

Odniesienia

1

Możesz spróbować wyłączyć, podając $logProvider.debugEnabled(true); w konfiguracji kątowej. Aby uzyskać efekt ustawienia debugEnabled, należy się upewnić, że podczas wykonywania dziennika należy użyć operatora $log.

Przykładowy kod

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

Oto Fiddle

Mam nadzieję, że to pomoże.

+2

Dzięki, ale myślę, że to [wyłącza tylko komunikaty dziennika debugowania] (https://github.com/angular/angular.js/blob/d3b1f502e3099d91042a1827a006ad112ea67d36/src/ng/log.js#L54) .. – alecxe