Как получить Массив данных JSON от Хранилища ExtJS

Не с Rc.

Это невозможно с Rc просто из-за его структуры памяти:

//  Equivalence:
struct RcBox<T> {
    strong: AtomicUsize,
    weak: AtomicUsize,
    data: T,
};

struct Rc<T> {
    ptr: *const RcBox<T>,
};

Следовательно, ожидается, что счетчики будут находиться рядом с T, и поэтому вы не можете разделить счетчики между двумя отдельные элементы.


Возможны альтернативы.

С точки зрения структуры памяти, вполне приемлемо создать альтернативу FlexRc:

struct Counters {
    strong: AtomicUsize,
    weak: AtomicUsize, // if support for FlexWeak is desired.
    ptr: *mut (),
    drop: fn(*mut ()),
}

struct FlexRc<T> {
    counters: *mut Counters,
    ptr: *const T,
}

И это теоретически может позволить отображение ... однако создание безопасного интерфейса поверх это может быть нелегко.

Как запретить пользователю возвращать несвязанный срок жизни в map? Достаточно ли того, чтобы срок службы обратной ссылки превышал срок службы flex, чтобы быть безопасным?

fn fool(flex: FlexRc<Option<i32>>) -> FlexRc<i32> {
    let i = 3;
    flex.map(|_| &i)
}
39
задан ROMANIA_engineer 15 December 2017 в 06:02
поделиться

3 ответа

Store.getRange () кажется именно тем, что вы ищете. Он вернет вам Ext.data.Record [] - массив записей. Если аргументы не переданы, возвращаются все записи.

52
ответ дан 27 November 2019 в 02:06
поделиться
 function getJsonOfStore(store){
        var datar = new Array();
        var jsonDataEncode = "";
        var records = store.getRange();
        for (var i = 0; i < records.length; i++) {
            datar.push(records[i].data);
        }
        jsonDataEncode = Ext.util.JSON.encode(datar);

        return jsonDataEncode;
    }
9
ответ дан 27 November 2019 в 02:06
поделиться

Попробуйте этот линейный код, он работал на меня как очарование:

var data = (store.getData().getSource() || store.getData()).getRange();
0
ответ дан 27 November 2019 в 02:06
поделиться
Другие вопросы по тегам:

Похожие вопросы: