Javascript-форум (https://javascript.ru/forum/)
-   ExtJS (https://javascript.ru/forum/extjs/)
-   -   Extjs 5 + SearchField.js (https://javascript.ru/forum/extjs/49788-extjs-5-searchfield-js.html)

treasury 01.09.2014 16:40

Указал код модели выше, не то оказалось в буфере

skrudjmakdak 01.09.2014 16:43

я не увидел ни в сторе не в модели, где бы вы описывали proxy где в ней необходимо указать урлу для получения данных.
посмотрите как это делает sencha в своем примере:
http://docs.sencha.com/extjs/4.2.2/#...Ext.data.Store

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

treasury 01.09.2014 16:44

Цитата:

Сообщение от skrudjmakdak (Сообщение 328439)
хотя у тебя как то странно.. если бы модели не было, он тебе может и твою app не инициализировал (но не факт).

просто у тебя и модель грузится по адресу MyApp.model.Object и смотря на консоль в твоей ошибки и данные тянутся по тому же адресу. т.е. еще как вариант у тебя идет запрос на получение данных, а урла по которой ты хочешь получить эти данные не рабочая

Да это похоже на правду, у меня выводятся все данные в dataview из store, какой я должен послать запрос в поиске для получения этих данных. Что я должен еще сделать чтобы поиск начал работать?

treasury 01.09.2014 16:52

Цитата:

Сообщение от skrudjmakdak (Сообщение 328450)
я не увидел ни в сторе не в модели, где бы вы описывали proxy где в ней необходимо указать урлу для получения данных.
посмотрите как это делает sencha в своем примере:
http://docs.sencha.com/extjs/4.2.2/#...Ext.data.Store

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

Указал в store:
proxy: {
type: 'ajax',
url: 'Object'
}

теперь запрос имеет вид http://localhost/OvGps/OvClient/Obje...25&q uery=DAF
Request Method:GET
Status Code:200 OK

Пишет [WARN] Unable to parse the JSON returned by the server
В Response просто код модели.
Ext.define('MyApp.model.Object', {
    extend: 'Ext.data.Model',

    requires: [
        'Ext.data.field.Integer',
        'Ext.data.field.String'
    ],

    fields: [
        {
            type: 'int',
            name: 'id',
            unique: true
        },
        {
            type: 'string',
            name: 'nm'
        }
    ]
});

skrudjmakdak 01.09.2014 16:57

Цитата:

Сообщение от treasury (Сообщение 328457)
Пишет [WARN] Unable to parse the JSON returned by the server
В Response просто код модели.

значит ошибка уже на сервере, вам надо добиться того, чтобы по ссылке, которую вы дергайте приходил json с данными

skrudjmakdak 01.09.2014 17:03

выж писали что данные тянутся во view? так? по какой урле данные приходят в первый раз?

treasury 01.09.2014 17:26

да, потом я их вставляю в store
for (var i=0; i<obj.items.length; i++){
        storeObject.add({id: obj.items[i].id, nm: obj.items[i].nm});       
    }

разве я их не из store должен потом доставать для поиска?

По такому урлу я получаю данные и я указал в proxy:
proxy: {
type: 'ajax',
url: 'http://localhost:3000/wialoncollector/items/'+Ext.util.Cookies.get("ssid")
}

Далее ошибка:

skrudjmakdak 01.09.2014 17:36

стора сама все делает. вы подгрузили данные она сама их в view вставила

treasury 01.09.2014 18:00

Давайте еще раз. Я обратился на сервер по такому урлу http://localhost:3000/wialoncollector/items/'+Ext.util.Cookies.get("ssid"), сервер мне отдал json я распарсил засунул в store, вывожу во view из store. Теперь для поиска елементов и соотвественно вывода их во view, я должен опять слать запрос на сервер для получения данных? Нельзя из store брать как-то то что ищу? И что по ошибке скажете что выше?

skrudjmakdak 01.09.2014 18:16

Цитата:

Сообщение от treasury (Сообщение 328478)
Я обратился на сервер по такому урлу http://localhost:3000/wialoncollector/items/'+Ext.util.Cookies.get("ssid"), сервер мне отдал json я распарсил засунул в store

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

вот пример:
http://docs.sencha.com/extjs/4.2.2/e...id/paging.html

смотрим сам код (правда архитектура там другая, все в одной куче):
http://docs.sencha.com/extjs/4.2.2/e...grid/paging.js

есть грид:
var grid = Ext.create(\'Ext.grid.Panel\', {
...


у него прописывается стора:
...
store: store,
...


эта стора объявляется так:
var store = Ext.create(\'Ext.data.Store\', {
        pageSize: 50,
...

где у него куча свойств:
pageSize: 50 - кол-во записей на странице
sorters: [{
            property: \'lastpost\',
            direction: \'DESC\'
        }]

сортировка по умолчанию. т.д.

и есть прокся:
proxy: {
            type: \'jsonp\',
            url: \'http://www.sencha.com/forum/topics-browse-remote.php\',
            reader: {
                root: \'topics\',
                totalProperty: \'totalCount\'
            },
            simpleSortMode: true
        },

type - тип данных, которые приходят с сервера, здесь jsonp - т.к. запрос кроссдоменный. в вашем случае я думаю хватит json
url - урла по которой store дернет вашу урлу, для получения данных
root - корень в json откуда надо брать данные
totalProperty - кол-во записей стора которой достала
и т.д. вы можете в документации почитать все свойства, которые можно задавать

модель соответственно задает структуру данных, поля которые буду использоваться:
\'title\', \'forumtitle\', \'forumid\', \'username\',

еще можно указать тип данных:
{name: \'replycount\', type: \'int\'},

вот урла, стора которую дергает:
http://www.sencha.com/forum/topics-browse-remote.php

пройдите по урле и посмотрите что там находится


Часовой пояс GMT +3, время: 11:34.