我们有一个非常复杂的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/

10-09 22:36