условная валидация ext.data.record - PullRequest
1 голос
/ 06 октября 2011

Я работаю с Ext 3.3 Как я могу выполнить проверку условных значений на уровне пакета Ext.data, например;если человек состоит в браке, укажите имя супруга, в противном случае оставьте его пустым.

Решение, которое я ищу, должно быть в пакете данных.(Допустим, у меня нет большого контроля над тем, как редактируются данные, но я отвечаю за их проверку.) Ext.Data.Field позволяет мне сказать allowBlank, true или false.Интересно, смогу ли я передать туда функцию, которая принимает запись и возвращает true или false, основываясь на других полях записи.

Я ищу альтернативные решения для этого в пакете Ext.data, (на уровне хранилища или записи).

1 Ответ

2 голосов
/ 10 октября 2011

Это зависит от того, когда вы делаете проверку.

Если вы проверяете, когда вызывается store.load();, тогда я предлагаю следующее:

    myStore.on('beforeload', function(store, loadOptions) {
        var isValid = true;
        var modifiedRecs = store.getModifiedRecords();
        Ext.each(modifiedRecs, (function(record, index, modifiedArray) {
            // do validation here
            // if validation failed, use the following two lines of code:
            // isValid = false;
            // return false;   // this exits modifiedRecs.each
        }, this);
        return isValid;  // If falsey, this return statement cancels loading.
                         // Note: the 'loadexception' event will be now be fired
                         // by myStore if isValid is falsey.
    });

Если вы проверяете каждый раз, когда данные изменяются в хранилище, используйте следующее:

    myStore.on('beforesave', function(store, data) {
        // simply do validation against `data`.
        // data will contain an array of records for each type of action that
        // was being saved, e.g., data['update'] === [updatedRec1, ...].
        // if validation failed, just `return false` to cancel saving.
    });

Вот что значит быть falsey .

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