DebugInfoEnabled для Angular 1.2
Angular 1.3 ввел новый метод debugInfoEnabled()
, который может обеспечить повышение производительности, если вызвано с помощью false
в конфигурации приложения:
myApp.config(['$compileProvider', function ($compileProvider) {
$compileProvider.debugInfoEnabled(false);
}]);
Кроме того, Angular 1.3 потеряла поддержку IE8. И это проблема для меня, мое приложение должно работать на IE8. Следовательно, я не могу перейти на Angular 1.3 и жить с 1.2.
Есть ли способ достичь той же функциональности с помощью Angular 1.2?
В частности, по крайней мере, часть того, что debugInfoEnabled()
делает:
- предотвратить создание классов
ng-scope
/ng-isolated-scope
CSS при создании новых областей
- не привязывать данные привязки и класс CSS класса ng к элементам с ngBind, ngBindHtml или {{...}} интерполяциями
В качестве одного из возможных вариантов я могу развернуть хранилище angularjs и вернуть его обратно в 1.2. Затем используйте поддерживающие обновления fork из восходящего потока.
Поблагодарили бы любые указатели.
Ответы
Ответ 1
Используйте базовый метод DOM setAttribute
, чтобы предотвратить поведение по умолчанию. Я отредактировал плункер в другом ответе:
http://plnkr.co/edit/cMar0d9IbalFxDA6AU3e?p=preview
сделать следующее:
- Метод клонирования DOM
setAttribute
- Отмените его с помощью проверки атрибутов
ng
отладки
- Возвращает false для
ng
атрибутов отладки
- Возврат как обычно в противном случае
Используйте его следующим образом:
/* 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);
}
Замените HTMLElement
на Element
для IE8.
Ссылки
Ответ 2
Вы можете отключить его, указав $logProvider.debugEnabled(true);
внутри вашей конфигурации angular.
Чтобы получить эффект от установки debugEnabled
, вам необходимо убедиться, что при использовании журнала используйте $log
поставщика.
Пример кода
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');
});
Вот Fiddle
Надеюсь, это поможет вам.