【发布时间】:2026-02-20 11:20:03
【问题描述】:
我有一个使用 $dirty 的角度驱动表单来发现启用/禁用提交按钮的更改。
表单的一部分使用指令来上传徽标,但表单注意到这是一个更改的元素,因此在设置验证大小的徽标时,我需要手动触发表单已发生更改,因此应该是一个案例formName.$setDirty();但是控制台说 $setDirty() 没有定义,我认为这是因为我在指令中。
在我的指令控制器中,我在文件选择时调用下面的函数,当文件有效时,我想调用 setdirty 方法。
function isFileValid(file) {
vm.fileValid = true;
vm.errorMessage = "";
if (file.size > 16777216) {
vm.errorMessage = "The File is too big!";
vm.fileValid = false;
} else if (file.size == 0) {
vm.errorMessage = "The File is empty!";
vm.fileValid = false;
}
if (vm.fileValid) {
// make form dirty
$setDirty();
}
return vm.fileValid;
}
这里是指令JS
(function () {
'use strict';
.module("tpBusinessProfile")
.directive("tpLogoUploader", tpLogoUploader);
function tpLogoUploader() {
return {
templateUrl: "tpLogoUploader.directive.html",
bindToController: true,
scope: {
changedMethod: "&"
},
controller: "tpLogoUploaderCtrl",
controllerAs: 'logoCtrl',
restrict: "E"
};
}
})();
感谢任何帮助。
【问题讨论】:
标签: angularjs angular-directive