Sto lavorando alla parte client di un'applicazione web, che è responsabile per ottenere risposte dagli utenti per domande specifiche e archiviarle e ripristinarle dal database (o dai cookie) e sto riscontrando il problema che l'aggiornamento delle risposte dal db attiverà anche il salvataggio di nuovo (perché viene chiamato lo stesso metodo answerQuestion
).
Ecco una semplificazione del mio caso d'uso (coffeescript):
class Questionnaire
constructor: ->
@prefillAnswers()
@listenToInput()
@listenToQuestionChanges()
prefillAnswers: ->
for q in @questionNames
@answerQuestion getAnswer(q)
listenToInput: ->
$('.input').on 'change', (e) =>
$input = $(e.currentTarget)
@answerQuestion $input.data('questionName'), $input.val()
listenToQuestionChanges: ->
@subscribeToEvent 'answeredQuestion', (msg, data) =>
saveAnswer(data.question, data.answer)
getAnswer: (qName) ->
# fetches answer from a database (such as cookies, but is irrelevant)
saveAnswer: (qName, answer) ->
# saves the answer
answerQuestion: (qName, answer) ->
@publishEvent 'answeredQuestion', {question: qName, answer: answer} # This part triggers unnecessary saving, but where is the best place for this?
# Change state of UI and data "model"
# ...
La mia domanda è, c'è un modello OOP che discute questo problema e le possibili soluzioni? Non so come iniziare ad affrontare questo, e leggere un intero libro non è un'opzione in questo momento ( Lo ho comunque sul mio elenco di cose da fare).
Forse questo potrebbe essere riscritto con un pattern MVC, e mi sto muovendo verso ciò iniziando a leggere il libro Web JavaScript Applicazioni , ma non riesco a vedere al momento anche con MVC, come il mio problema viene evitato nel modo migliore ...