Tôi đang cố gắng vô hiệu hóa tệp input
thẻ, sau khi người dùng đã chọn tệp.Angularjs - ng-disabled không hoạt động như mong đợi
HTML:
<div ng-controller='firstController'>
<div ng-controller='secondController'>
<input type="file" name="file" upload class="theFileInput" ng-disabled="fileInMemory">
</div>
</div>
JS, đầu tiên điều khiển:
$scope.fileInMemory = false; // tracks if user selected a file for upload, but didn't upload it
$rootScope.$on('fileAdded', function() {
$scope.fileInMemory = true;
console.log($scope.fileInMemory);
});
upload
là một chỉ thị.
Ngày tải trang, ng-disabled
có false
như mong muốn, khi fileInMemory
được thay đổi, input
thẻ vẫn không bị vô hiệu hóa. console.log
cho thấy rằng giá trị của fileInMemory
đang thay đổi theo ý muốn.
gì tôi đã cố gắng cho đến nay
<input type="file" name="file" class="theFileInput" ng-disabled="'fileInMemory'">
Chỉ cần vô hiệu hóa lĩnh vực này ngay lập tức, khi fileInMemory
là falsy.
<input type="file" name="file" class="theFileInput" ng-disabled="fileInMemory == 'true'">
Không hoạt động.
<input type="file" name="file" class="theFileInput" ng-disabled="{{fileInMemory}}">
Vẫn không hoạt động.
Cách tốt nhất để vô hiệu hóa thẻ input
là gì?
Tìm thấy vấn đề
Dường như vấn đề ở đây là phạm vi. Tôi có firstController
với 'phạm vi, bên trong nó secondController
với' phạm vi và trên input
thẻ chỉ thị upload
, điều này dường như tạo ra phạm vi của riêng nó và không thấy phạm vi firstController
.
secondController
và upload
là bộ điều khiển chung và do đó không được kế thừa từ firstController
.
Tôi đoán giải pháp tốt nhất của tôi là thêm một số trình xử lý chung trong secondController
, dựa trên thuộc tính bổ sung trên trường input
sẽ vô hiệu hóa nó khi cần.
không sử dụng biểu thức, chỉ biến – charlietfl
Tôi nghĩ rằng đầu vào tệp không nằm trong phạm vi mà tệpInInmemory thuộc về. Bạn có thể làm một bản demo? – Alborz
@charlietfl i cũng sử dụng biến này, nó không hoạt động. – Neara