我们有一个非常复杂的smDateTimePicker指令。此时间选择器控件可以是另一个指令的一部分,并且该指令可以放入表单(或选项卡)中。在该smDateTimePicker指令中,我们将代码重置形式设置为原始状态(我刚才添加了最后两行):
DateTimePicker.prototype.setPristine = function () {
if (this.form) {
this.form.$setPristine();
if (this.form.$$parentForm.$dirty) {
this.form.$$parentForm.$setPristine();
}
if (this.form.$$parentForm.$$parentForm && this.form.$$parentForm.$$parentForm.$dirty) {
this.form.$$parentForm.$$parentForm.$setPristine();
}
}
};
我不喜欢我需要使用$$ parentForm属性,并且在我的特定情况下需要使用两次。此外,如果我有更深的层次结构怎么办?是否有一种更干净的方法将所有表格从下至上重新设置为原始格式?
最佳答案
看看这是否适合您。如果需要,您可能需要做一些小的更改:
DateTimePicker.prototype.setPristine = function () {
if (this.form) {
setPristineToForm(this.form);
}
};
// Recursive method - goes up the hierarchy of forms
var setPristineToForm = function (form) {
if (form) {
//Check if a parent form exists. If it does, set parent's pristine
var parentForm = this.form.$$parentForm;
if (parentForm) {
setPristineToForm(parentForm);
}
else { //No parent exist. Set pristine to current form if it is dirty.
if (form.$dirty)
form.$setPristine();
}
}
};
关于javascript - 从下至上将所有表格重新设置为原始状态,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/48528957/