2015-01-05 52 views
10

góc 1.3 giới thiệu một debugInfoEnabled() phương pháp mới có thể cung cấp một sự thúc đẩy trong hoạt động nếu gọi với false trong application config function:debugInfoEnabled cho góc 1.2

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

Ngoài ra, góc 1.3 giảm hỗ trợ IE8. Và đây là một vấn đề đối với tôi, ứng dụng của tôi phải chạy trên IE8. Do đó, tôi không thể nâng cấp lên góc 1,3 và phải sống với 1,2.

Có cách nào để đạt được cùng chức năng với góc 1,2?

Đặc biệt, ít nhất là một phần của những gì debugInfoEnabled() làm:

  • ngăn chặn việc tạo ra ng-scope/ng-isolated-scope lớp CSS trong khi tạo ra phạm vi mới
  • không đính kèm dữ liệu ràng buộc và lớp CSS ng-class đến các yếu tố với ngBind, ngBindHtml hoặc {{...}} nội suy

Là một tùy chọn có thể, tôi có thể chia ngăn kho chứa angularjs và quay lại tính năng trở lại 1.2. Sau đó, sử dụng ngã ba duy trì cập nhật từ thượng nguồn.

Sẽ đánh giá cao bất kỳ con trỏ nào.

+0

phiên bản chính xác của góc bạn đang sử dụng là gì? là nó 1.2.7 hoặc ít hơn nó –

+0

@pankajparkar cố gắng để gắn bó với mới nhất '1.2. *'. Hiện tại '1.2.28'. Cảm ơn. – alecxe

+0

dùng thử app.config (hàm ($ logProvider) { $ logProvider.debugEnabled (true); }); bên trong ứng dụng của bạn –

Trả lời

5

Sử dụng phương thức DOM setAttribute cơ bản để ngăn chặn hành vi mặc định. Tôi đã chỉnh sửa plunker trong câu trả lời khác:

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

phải làm như sau:

  • Clone DOM setAttribute nguyên mẫu phương pháp
  • Ghi đè nó với một tấm séc trị thuộc tính ng debug
  • Trả về false cho ng các thuộc tính gỡ lỗi
  • Quay lại như bình thường khácwi se

Sử dụng nó như sau:

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

Thay HTMLElement với Element cho IE8.

Tài liệu tham khảo

1

Bạn có thể thử tắt tính năng này bằng cách đề cập đến $logProvider.debugEnabled(true); bên trong cấu hình góc của bạn. Để có hiệu lực của thiết lập debugEnabled, Bạn cần đảm bảo rằng trong khi sử dụng nhật ký nhà cung cấp $log.

Mẫu Mã

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

Đây là Fiddle

Hy vọng rằng điều này sẽ giúp bạn.

+2

Cảm ơn, nhưng tôi nghĩ rằng nó sẽ [chỉ tắt thông báo nhật ký gỡ lỗi] (https://github.com/angular/angular.js/blob/d3b1f502e3099d91042a1827a006ad112ea67d36/src/ng/log.js#L54) .. – alecxe

Các vấn đề liên quan