Tôi đang phát triển một ứng dụng web với AngularJS. Tôi đã có một lỗi xuất hiện từ hư không, nó đã làm việc tốt và tôi thực sự không biết tại sao nó không hoạt động nữa.Loại không bắt buộcLỗi: Không thể đặt thuộc tính offsetWidth # <HTMLElement> chỉ có một bộ thu hẹp
Vì vậy, nó chỉ thị, tôi cố gắng đặt thuộc tính offsetWidth
của một phần tử trong mẫu html chỉ thị. Vì tôi thực sự không biết nó có thể đến từ đâu, tôi sẽ cung cấp cho bạn mã đầy đủ của chỉ thị và mẫu của tôi. Chỉ thị này tạo ra một nút ứng dụng và xử lý hiệu ứng hình ảnh của nó khi nhấp chuột. Đó là dòng $element[0].offsetWidth = $element[0].offsetWidth;
gây ra lỗi. (Đó là mẹo để khởi động lại hoạt ảnh)
Tôi lặp lại, mã này hoạt động tốt và tôi gần như chắc chắn rằng tôi không thực hiện bất kỳ thay đổi nào. Tôi đang sử dụng Chrome để gỡ lỗi, có thể nó đến từ nó?
Lỗi: Uncaught TypeError: Cannot set property offsetWidth of #<HTMLElement> which has only a getter
Chỉ thị:
'use strict';
XVMApp.directive('appButton', ['$location', function($location){
return {
restrict: 'E',
replace: true,
scope: {
img: '@',
fillPercent: '@?',
target: '@?'
},
link: function ($scope, $element) {
// Image percentage fill button
if($scope.fillPercent === undefined) $scope.fillPercent = '100';
// Click event
$element.on('click', function() {
// Url target
if($scope.target !== undefined){
$scope.$apply(function() {
$location.path($scope.target);
});
}
// Click effect
$element[0].preventDefault;
$element[0].classList.remove('app-button-click-effect');
$element[0].offsetWidth = $element[0].offsetWidth;
$element[0].classList.add('app-button-click-effect');
});
},
templateUrl: 'src/directive/appButton/app-button.html'
};
}]);
mẫu:
<div class="app-button"
style="background-size: {{fillPercent}}%; ">
<div style="
background-image: url('src/assets/img/{{img}}');
background-repeat: no-repeat;
background-position: center;
background-size: {{fillPercent}}%;
height: 100%;
width: 100%; ">
</div>
</div>
Nếu tôi chỉ nhận được giá trị bù đắpWidth, mẹo hoạt ảnh khởi động lại vẫn hoạt động ($ element [0] .offsetWidth;), do đó, sự cố của tôi đã được khắc phục. Nhưng tôi vẫn tự hỏi tại sao tôi không thể thiết lập một giá trị để bù đắp tài sảnWidth? – sylvain1264