powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / Порядок выполнения функций
2 сообщений из 2, страница 1 из 1
Порядок выполнения функций
    #38088543
Фотография Zick
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Доброго времени. Имеется следующий код (часть модели представления для knockout.js):
Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
    self.add = function () {
        var item = new Project();
        self.cancel(item); // следующий после этого код выполнится после выполнения self.cancel или не будет происходить ожидание выполнения self.cancel ???
        self.data.unshift(item);
        self.selectedItem(item);
        self.action(_ENUMS.CRUD.Add);
    };

    self.edit = function (item) {
        self.cancel(item);
        self.selectedItem(item);
        self.action(_ENUMS.CRUD.Edit);
    };

    self.cancel = function (item) {
        self.errors([]);
        switch (self.action()) {
            case _ENUMS.CRUD.Add:
                if (self.selectedItem()) {
                    self.data.remove(self.selectedItem());
                }
                self.selectedItem(null);
                break;
            case _ENUMS.CRUD.Edit:
                $.ajax(self.url + '/' + self.selectedItem().ProjectId, {
                    data: null,
                    type: 'GET',
                    contentType: 'application/json',
                    success: function (data) {
                        self.data.replace(self.selectedItem(), new Project(data.ProjectId, data.Code, data.Name));
                        self.selectedItem(null);
                    },
                    statusCode: {
                        400: function (data) {
                            var errors = $.parseJSON(data.responseText);
                            for (var i = 0; i < errors.length; i++) {
                                if (errors[i].Message) {
                                    self.errors.push(new Error(errors[i].Name, errors[i].Message));
                                }
                            }
                        }
                    }
                });
                break;
        }
    };



Смысл следующий: при переходе с добавления к редактированию, происходит отмена редактирования (запрашиваю данные для редактируемой записи с сервера, вдруг пользователь что изменил) и начинаю добавление (вставляю пустую запись в контейнер данных модели представления). По логике должно начаться добавление (смениться шаблон для вставки записи), но этого не происходит после ajax-запроса (пустая строка вставляется, но строка не переходит в режим редактирования).
...
Рейтинг: 0 / 0
Порядок выполнения функций
    #38089220
Програмёр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Zick,

в self.cancel асинхронный запрос отправляется, а значит он отпавится, выполнение функции закончится, функция-родитель тоже закончит выполнение, потом, если сервер уже ответит, отработает функция success. То есть, ждать не будет.
...
Рейтинг: 0 / 0
2 сообщений из 2, страница 1 из 1
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / Порядок выполнения функций
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]