Состояние гонки Kendo-UI SPA - PullRequest
1 голос
/ 07 мая 2020

Я реализую классы SPA Kendo-UI для реализации экрана CRUD. Не вдаваясь в подробности, у меня есть наблюдаемое, у которого есть свойства, которые представляют различные «интерфейсы», например, Search, Create, Update. Если удалить весь мусор, это будет выглядеть примерно так:

var viewModel = kendo.observable({
    search: kendo.observable({
        filterPayload: kendo.observable({}),
        init: function() {
            // setup kendo-ui controls
        },
        show: function() {
            // grid's dataSource read
        }
    }),
    add: kendo.observable({
        insertPayload: kendo.observable({}),
        init: function() {
            // setup kendo-ui controls
        },
        show: function() {
            // reset the form by calling:
            // viewModel.add.insertPayload.set("[property name]", null);
        }
    }),
    update: kendo.observable({
        entityId: null,
        updatePayload: kendo.observable({}),
        init: function() {
            // setup kendo-ui controls
        },
        show: function() {
            // Read from the database using viewModel.update.entityId
            // Set the default values of the form using the results returned
        }
    }),
});

Где я нахожусь в состоянии гонки, находится в viewModel.update.show Что происходит, так это то, что я настраиваю kendoMultiSelect в init заполняет данные с сервера, но также устанавливает значения viewModel.update.updatePayload путем нажатия сервера в show. Это вызывает состояние гонки (иногда), когда пользователь впервые посещает интерфейс обновления, где данные, возвращаемые из базы данных для значений по умолчанию, происходят быстрее, чем настраиваемый multiSelect, в результате чего multiSelect выглядит так, как будто не выбраны никакие значения.

Есть ли какой-либо шаблон проектирования, который я могу реализовать, чтобы предотвратить это состояние гонки, или я вынужден потенциально обрабатывать logi c в «шоу» дважды?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...