object.defineProperty에 액세스하지 않고 데코레이터를 사용하려면 어떻게해야합니까?object.defineProperty가없는 AngularJS Decorator
내가 사용할 수있는 심으로 찾고 있어요 :
하지만 경우에 그
이 테스트를 통과하지 못한, 장식이 작동하도록 한 또 다른 방법은 무엇입니까?$onRootScope에 데코레이터를 사용하고 있습니다.
각도 1.08을 사용 중입니다. IE7과의 호환성이 필요합니다.
업데이트
나는 제대로 작동 몇 가지 방법을 시도했지만 나는 그들 사이의 차이를 모르는 :
var app = angular.module('plunker', []);
app.config(['$provide', function($provide){
$provide.decorator('$rootScope', ['$delegate', function($delegate){
$delegate.a = 1;
$delegate.constructor.prototype.b = 2;
Object.defineProperty($delegate.constructor.prototype, 'c', {
value: 3
});
return $delegate;
}]);
}]);
app.controller('MainCtrl', function($rootScope, $scope) {
console.log($rootScope); //reveals `a` property
console.log($rootScope.constructor.prototype); //=> {b:2, c:3}
console.log($rootScope.a); //=> 1
console.log($rootScope.b); //=> 2
console.log($rootScope.c); //=> 3
$scope.name = 'World';
});
plunkr 당신을 감사드립니다.
: 함수는 현재 브라우저를 사용할 수없는 경우
당신은
getObjectPrototypeOf
에 대한 John Resig's polyfill을 사용할 수 있습니다 $ onRootScope에 데코레이터를 만드시겠습니까? –@EdwinDalorzo 이미 질문이 있습니다. 필자는 $ onRootScope를 정의하는 방법에 대한 대답을 언급했으며'object.defineProperty()'를 사용합니다. 내가 찾은 다른 예제들도 이것을 사용합니다. 'object.defineProperty()'를 사용하지 않는 예제가 있습니까? –