Nano Hash - криптовалюты, майнинг, программирование

сетка rowedit с синхронизацией

Я пытаюсь реализовать общую сетку редактирования строк, например этот пример, с той разницей, что я хотел бы синхронизировать изменения с серверной частью. До сих пор я могу добавить новую строку с onRoweditAdd.

Ext.define('Mb.view.base.RoweditListController', {
    extend: 'Ext.app.ViewController',
    alias: 'controller.roweditlist',
    onRoweditAdd: function(me){
        var grid = me.up('panel'),
            edit = grid.editingPlugin,
            store = grid.getStore(),
            record = store.getModel().create({id: 0});
        edit.cancelEdit()
        store.insert(0, record)
        edit.startEdit(record, 0)
    },
    editRowedit: function(editor, ctx) {
        var store = ctx.grid.getStore();
        store.sync()
    }
})

Проблема в том, что store.sync() отправляет на сервер не create запрос, а update запрос. Похоже, что store.insert(0, record) не учтено. Синхронизируется только модификация, сделанная пользователем. Что может быть виновником?


  • Однако я попытался воспроизвести , в моем случае вызывается только Create, а не Update. Странно. 30.05.2017
  • Даже я пытался и не смог воспроизвести его, пожалуйста, поделитесь скрипкой, если это возможно. 31.05.2017
  • @ Александр, я нашел обходной путь, посмотри на мой ответ. Если вы понимаете, почему создание записи с id 0 не разрешено, укажите это как свой ответ, я приму его. 31.05.2017
  • @RonakPatel Я нашел обходной путь, посмотри на мой ответ. Если вы понимаете, почему создание записи с id 0 не разрешено, укажите это как свой ответ, я приму его. 31.05.2017

Ответы:


1

Предоставляя существующую id в записи, ExtJS предполагает, что эта запись уже существует в вашем магазине и должна быть обновлена. Если вы не укажете идентификатор, он предполагает, что это недавно созданная запись, и пойдет по маршруту создания. Это исходит из предположения, что вы используете стратегию сгенерированного идентификатора (что обычно и следует делать), и поэтому вы никогда не будете предоставлять идентификаторы самостоятельно при создании.

Под капотом ExtJS помечает запись как фантомную: истинную или ложную. Фантомные записи — это те, которые существуют только во внешнем интерфейсе и еще не сохранены. Создание записи без id пометит ее как фантомную, тогда как создание записи с уже предоставленным идентификатором не пометит ее как фантомную и не вызовет вызов создания, а вместо этого вызовет обновление

31.05.2017
  • Спасибо за ваше объяснение. Это отличие от ExtJs 4, где id==0 означало новую запись. 31.05.2017

  • 2

    К сожалению, мне не удалось создать скрипт, воспроизводящий проблему.

    Я решил это, изменив эту строку:

    record = store.getModel().create({id: 0});
    

    to

    record = store.getModel().create({});
    

    Проблема должна быть связана с новой реализацией идентификаторов записей начиная с ExtJs 5. Но я не могу это объяснить...

    Создание новой записи с id: 0 больше не должно поддерживаться в ExtJs 6.

    31.05.2017

    3

    Я обнаружил, что в Ext.data.Model idProperty используется как уникальный ключ для идентификации записи. По умолчанию установлено поле id. Если вы предоставите его дубликат, это вызовет проблему в store.

    Это описание написано в ExtJS doc

    The data values for this field must be unique or there will be id value collisions in the Ext.data.Store.
    Defaults to:
    'id'
    

    Перейдите по ссылке

    31.05.2017
    Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..