I’m just trying to figure out a probably simple question.
Should views set model data directly or only call model methods that change their own data?
Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.
Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.
Lost your password? Please enter your email address. You will receive a link and will create a new password via email.
Please briefly explain why you feel this question should be reported.
Please briefly explain why you feel this answer should be reported.
Please briefly explain why you feel this user should be reported.
like everything else in software development, “it depends”.
if you’re using form inputs in your views and you just need to get the data from those inputs in to the models, set the data directly. You can do this any number of ways, including “change” events from the input fields, like this:
On the other hand, if you’re kicking off business logic and other code that happens to set the data in the model (but really only does this as part of the business logic), then you should call a method on the model.
A “state machine” would be a good example of when you would do this. Or, in an image gallery that I wrote, I had some logic around the selection of an image for display. If an image is already selected, don’t select it again. I put this logic in a method on my image model:
As illustrated here, I like to run by the simple rule that if I have zero logic around the call to set, then I set it directly from wherever I am. If there is any logic related to the model, around the set, then I put it in the model.
Either way, when you do want to set data, you should use the
setmethod. Bypassing this and setting the model’s attributes directly throughmodel.attributeswill prevent a lot of Backbone’s code from firing and potentially cause problems for you.