Come evitare di legare questi due metodi insieme allo stato globale mutabile?

2

Sono in procinto di leggere Code Complete 2 e ho imparato che usare lo stato globale è un no-no. Cosa posso fare per evitare di utilizzare lo stato globale in questa situazione?

Alcune informazioni di base: ho due metodi diversi ( formAdded e formRemoved ), ognuno dei quali viene chiamato a seconda che si faccia clic su un pulsante Aggiungi o si fa clic su un pulsante Rimuovi. timesSignerIsRequired è una variabile di classe, e questi due metodi sono legati insieme da esso, il che sembra sbagliato. Ecco il mio codice.

formAdded: function(ev) {
    var formId = $(ev.currentTarget).data('formid');
    var self = this;
    var forms = Forms;
    $.each(forms, function(index, form) {
        if (form.id == formId) {
            //found this form - now find all signer ID's required with the current accountTypeId
            var requiredSigners = form[this.appModel.get('accountTypeId')];
            for (var i = 0; i < requiredSigners; i++) {
                self.timesSignerIsRequired[i] += 1;

                if (!signerIsRendered(i)) {
                    //render signer into view
                }
            }
        }
    });
}

formRemoved: function(ev) {
    var formId = $(ev.currentTarget).data('formid');
    var self = this;
    var forms = Forms;
    $.each(forms, function(index, form) {
        if (form.id == formId) {
            //found this form - now find all signer ID's required with the current accountTypeId
            var requiredSigners = form[self.appModel.get('accountTypeId')];
            for (var i = 0; i < requiredSigners; i++) {
                self.timesSignerIsRequired[i] -= 1;

                if (self.timesSignerIsRequired[i] <= 0) {
                    //remove signer from the view
                }
            }
        }
    });
}

Qualche suggerimento?

    
posta Tylerlee12 26.06.2015 - 16:55
fonte

1 risposta

1

timesSignerIsRequired non è uno stato globale, è un campo sul tuo oggetto. Va bene per i metodi di un oggetto accedere ai campi (compresi i campi privati) dello stesso oggetto.

    
risposta data 03.07.2015 - 10:35
fonte