GOPHERSPACE.DE - P H O X Y
gophering on hngopher.com
HN Gopher Feed (2017-10-12) - page 2 of 10
 
___________________________________________________________________
Show HN: Vue-Model - Models with HTTP Actions for Vue.js
33 points by aarondf
https://github.com/aarondfrancis/vue-model
___________________________________________________________________
 
IgorPartola - 1 hours ago
What exactly happens when the user modifies the field customer.name
but doesn?t hit save/trigger customer.http.update()? I usually
resolve this by mirroring customer.name to this.formData.name and
having a reset property for this.formData.Also how does it work
with nested models returned from the server? Can I do
user.tickets.push(newTicket) in some form?
 
  aarondf - 1 hours ago
  If the user modifies customer.name and then doesn't trigger save,
  nothing happens, ie: doesn't persist to the backend.To "reset" a
  form, I guess you could get it again from the server via
  customer.http.fetch()
 
    IgorPartola - 1 hours ago
    But how do I know when to fetch? With my approach global state
    is not modified until the user explicitly does it. Modifying
    customer.name and not saving it will persist until the next
    fetch() and in the meantime the user will see it as if the name
    was actually saved.
 
      aarondf - 1 hours ago
      Not sure I'm following your exact setup... But you could of
      course just make a model for your form and _not_ your
      customer. Without seeing your full setup, it's hard for me to
      say for sure!
 
        IgorPartola - 11 minutes ago
        In my apps customer will be a global via VueX. If I go to
        the Edit Customer view, change customer.name, but don?t
        save, the change will be visible throughout the rest of the
        app: the customer list, all the other views where the
        customer?s name is displayed. It would be a bug to show
        unsaved data anywhere but in the edit view. And if I go to
        the edit view, make changes, then exit without saving, then
        go back, the view should be reset. Making two copies of a
        global model instance seems like the wrong solution.Edit:
        what this is missing is essentially an implementation of
        forms. That doesn?t necessarily need to be a part of this
        project, but it should be used together with this.
        Otherwise you end up at least temporarily persisting
        changes that were never saved. See the relationship between
        Django models and forms.Also, one feature I have
        implemented in at least one of my apps has been using
        WebSockets to deliver new, updated, and deleted models from
        the server. That could be a super powerful addition here.
 
        aarondf - 9 minutes ago
        @IgorPartola, it sounds like this may not be the right fit
        for your setup
 
ElatedOwl - 1 hours ago
Neat! Is this meant to replace Vuex / some other store?
 
  aarondf - 1 hours ago
  No, I probably wouldn't say that this replaces Vuex.I don't use
  Vuex, I find it to be more complex than I need. I build a lot of
  CRUDdy apps that are pretty straightforward, so I've never dived
  into it much. I've watched the lessons on Laracasts for it, but
  just don't need it yet.This is to replace the instances where you
  have a update() methods in your vue instances that set up axios,
  organize the data, send the request, and handle the response.It's
  very much for restful resources.
 
davidscolgan - 1 hours ago
I'm usually a Django backend developer doing the whole server-
rendered static html type sites, but I've attempted to venture into
the world of single page apps a few times.  The thing that always
tripped me up was figuring out the frontend model layer.  Nothing
I've used, whether Redux or Vuex or Mobx or whatever else seemed as
elegant and simple as say the Django ORM is on the backend.  There
were always missing pieces that I couldn't quite get working
cleanly, like validation, or loading indicators, etc.This looks
like it has the potential to be what I was hoping someone would
make.  Looks excellent so far, thanks for sharing!
 
  rlander - 53 minutes ago
  Might be the first time I've seen the words "elegant", "simple"
  and "Django's ORM" in the same sentence. You could say it's easy
  to get started with, or do simple queries, but it's definitely
  not simple nor elegant.
 
    davidscolgan - 29 minutes ago
    Haha, to each their own.  There is such a thing as the object-
    relational impedance mismatch for a reason.  I'm currently
    learning Elixir and Phoenix and it's ORM Ecto has some really
    interesting ideas.  Functional programming seems to map to
    relational databases better than object oriented does.
 
  aarondf - 1 hours ago
  Thanks for saying that. It sounds like you and I are quite
  similar. I've never built a full SPA because I it's _so_ much
  easier and faster for me to build "traditional" apps. Since
  discovering Vue.js I've started wading further and further into
  sprinkling JS components onto the page.Vuex, Redux, etc just
  don't make sense in my brain, so I've never used them. I built
  this because I wanted something simple to interact with my
  Laravel backends. Most of what I do is CRUDdy, and this is super
  helpful for that.