我是一个有用的助手,可以为您翻译文本。
我正在尝试禁用文件
HTML:
不工作。
我正在尝试禁用文件
input
标签,在用户选择文件后。HTML:
<div ng-controller='firstController'>
<div ng-controller='secondController'>
<input type="file" name="file" upload class="theFileInput" ng-disabled="fileInMemory">
</div>
</div>
JS,第一个控制器:
$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
是一个指令。
页面加载时,ng-disabled
应该为false
,当fileInMemory
被更改时,input
标签仍未被禁用。 console.log
显示fileInMemory
的值正在按预期更改。
我尝试过的方法
<input type="file" name="file" class="theFileInput" ng-disabled="'fileInMemory'">
当fileInMemory
为假时,立即禁用该字段。
<input type="file" name="file" class="theFileInput" ng-disabled="fileInMemory == 'true'">
不工作。
<input type="file" name="file" class="theFileInput" ng-disabled="{{fileInMemory}}">
还是不起作用。
禁用标签的最佳方法是什么?
找到了问题
看起来问题出在作用域上。
我有一个带有其范围的firstController
,其中包含有其范围的secondController
,以及upload
指令的input
标签,显然创建了它自己的作用域,并且没有看到firstController
的作用域。
secondController
和upload
都是一般的控件器,因此不会继承firstController
。
我想我最好的解决方案是在secondController
中添加一些通用处理程序,基于input
字段上的附加属性,在需要时禁用它。
fileInMemory
的值输出到HTML时,它正常显示,具有正确的值。 - NearafileInMemory
属性的对象。 - charlietfl