Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Content is not updated when creating a model #235

Closed
Qsppl opened this issue Mar 19, 2024 · 2 comments
Closed

Content is not updated when creating a model #235

Qsppl opened this issue Mar 19, 2024 · 2 comments
Labels
store Applies to the store feature

Comments

@Qsppl
Copy link
Contributor

Qsppl commented Mar 19, 2024

example: https://stackblitz.com/edit/hybrids-store-ui-form-example-kbktry?file=src%2Findex.js,src%2Fcomponent.js,src%2Fmodel.js

image

@smalluban
Copy link
Contributor

smalluban commented Mar 20, 2024

It might be a not very well-documented feature (it is still in docs) -

Here you have a slightly simplified version of your example (I think you don't need a bunch of logic in my-model and store definition) - https://stackblitz.com/edit/hybrids-store-ui-form-example-71ugrh?file=src%2Findex.js,src%2Fcomponent.js,src%2Fmodel.js%3AL22

Essentially, you must add loose: true to your [store.connect] definition, as the docs say:

By default, it is set to false, so updating model instances will not change items’ order or placement in the array. The typical use case to turn it on is when you have a paginated list, and updating or creating a model instance might affect the order or content of the list.

https://hybrids.js.org/#/store/storage?id=loose

For the "memory-based" models (without the definition) this option is true. It would be a breaking change to switch it to true for custom storage, but I would re-think it. The case for setting it to false is that, otherwise, any change to any instance of the model will invalidate every list call - it might cause a cascade of fetches for pages of data. You can still control that then manually by calling store.clear(listModelInstance).

@smalluban smalluban added the store Applies to the store feature label Mar 20, 2024
@Qsppl
Copy link
Contributor Author

Qsppl commented Mar 20, 2024

Thank you, I will clear the cache when adding/removing a model.

This solution works:

async function submit(host, event) {
  event.preventDefault();

  await store.submit(host.draft);
  // clear cache for enumerable descriptors by this store
  store.clear([Model]);

  if (!host.model) {
    host.draft = null;
  } else {
    host.editMode = false;
  }
}

@Qsppl Qsppl closed this as completed Mar 20, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
store Applies to the store feature
Development

No branches or pull requests

2 participants