Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #11 (permalink)  
Старый 20.10.2014, 16:35
Профессор
Отправить личное сообщение для skrudjmakdak Посмотреть профиль Найти все сообщения от skrudjmakdak
 
Регистрация: 27.04.2012
Сообщений: 1,410

я так понял, что я буду вам 3 года объяснять. основу взял отсюда:
http://docs.sencha.com/extjs/4.2.2/e...tml?theme=gray
вы в проксе пишите тип jsonp, указывайте урлу и далее нужные вам параметры.
тэг script extjs создаст самостоятельно, это для вас скрыто, т.к. оно вам не нужно.

если вы посмотрите в нетворке список передаваемых параметров, то увидите вот такой список:
_dc:1413807788180
page:1
start:0
limit:50
callback:Ext.data.JsonP.callback1

где: _dc - параметр с рандомным значением (очистка кеша)
page, start, limit - задает правило как нужно выводить данные. с какой по какой записи. т.е. с 0 по 50 записи (или 1 ая страница)
callback - это как раз функция, которая должна вызываться после того как скрипт подгрузится. т.е. вы должы свои данные обернуть в эту функцию:
Ext.data.JsonP.callback1({... ваши данные...});
причем каждый раз имя функции меняется!!!

вот пример, вырезав все нахрен из того примера:
<html>
	<head>
	
		<!--<link href="ext-4.2.1.883/resources/ext-theme-gray/ext-theme-gray-all-debug.css" rel="stylesheet"/>
		<script src="ext-4.2.1.883/ext-all.js"></script>-->
		<link href="http://docs.sencha.com/extjs/4.2.2/extjs-build/resources/css/ext-all-gray-debug.css" rel="stylesheet"/>
		<script src="http://docs.sencha.com/extjs/4.2.2/extjs-build/ext-all.js"></script>
		<script>

Ext.onReady(function () {
    var store = Ext.create('Ext.data.Store', {
        pageSize: 50,
        fields: ['title'],
        proxy: {
            type: 'jsonp',
            url: 'http://www.sencha.com/forum/topics-browse-remote.php',
            reader: {
                root: 'topics',
                totalProperty: 'totalCount'
            }
        },
		autoLoad: true
    });
    
    var grid = Ext.create('Ext.grid.Panel', {
        width: 400,
        height: 300,
        title: 'Browse Forums',
        store: store,
        // grid columns
        columns:[{
            text: "Topic",
            dataIndex: 'title',
            flex: 1,
            sortable: false
        }],
        renderTo: Ext.getBody()
    });

});
		</script>
	</head>
    <body></body>
</html>
Ответить с цитированием
  #12 (permalink)  
Старый 20.10.2014, 17:38
Аспирант
Отправить личное сообщение для treasury Посмотреть профиль Найти все сообщения от treasury
 
Регистрация: 26.08.2014
Сообщений: 49

Сообщение от skrudjmakdak Посмотреть сообщение
callback - это как раз функция, которая должна вызываться после того как скрипт подгрузится. т.е. вы должы свои данные обернуть в эту функцию:
Ext.data.JsonP.callback1({... ваши данные...});
причем каждый раз имя функции меняется!!!
Вот это непонятно как обернуть данные в ф-ю. Данные динамические.
Ответить с цитированием
  #13 (permalink)  
Старый 20.10.2014, 18:54
Аспирант
Отправить личное сообщение для treasury Посмотреть профиль Найти все сообщения от treasury
 
Регистрация: 26.08.2014
Сообщений: 49

Разобрался, оказывается у меня запрос отправлялся локально на сервер по localhost, оказывается ему это не нравится, пришлось домен прописать и все заработало. Спасибо, skrudjmakdak
Данные то вывелись все ок, но данные как-то одним блоком, т.е. не так как в dataview, теперь не могу применить onDataviewSelect к данным. Т.е. где-то затерялся в DOM div с class="x-dataview-item x-item-selected"
Ответить с цитированием
  #14 (permalink)  
Старый 20.10.2014, 20:45
Профессор
Отправить личное сообщение для skrudjmakdak Посмотреть профиль Найти все сообщения от skrudjmakdak
 
Регистрация: 27.04.2012
Сообщений: 1,410

если еще не разобрались с этой проблемой, то показывайте свой код, я не экстрасенс
Ответить с цитированием
  #15 (permalink)  
Старый 21.10.2014, 11:28
Аспирант
Отправить личное сообщение для treasury Посмотреть профиль Найти все сообщения от treasury
 
Регистрация: 26.08.2014
Сообщений: 49

Сообщение от skrudjmakdak Посмотреть сообщение
если еще не разобрались с этой проблемой, то показывайте свой код, я не экстрасенс
Вот фрагмент view с шаблоном, которая загружается по default:
items: [
                {
                    xtype: 'dataview',
                    autoScroll: true,
                    id: 'dataview',
                    margin: '10 0 10 10',
                    disableSelection: false,
                    itemSelector: 'div',
                    itemTpl: [
                        '<table>',
                        '   <tr>',
                        '       <td width=\'200px\'><input type="checkbox" enabled="enabled" value="open" name="comment_status" <tpl if="active">checked="checked"</tpl> /><img src="{host}/avl_icon/get/{id}/18/any.png">{nm}</td>',
                        '       <td class="configure"></td>',
                        '   </tr>    ',
                        '       </table>',
                        '   '
                    ],
                    store: 'CarStore',
                    listeners: {
                        itemclick: {
                            fn: 'onDataviewSelectConfigure',
                            single: false
                        },
                        select: 'onDataviewSelect'
                    }
                }


Далее у меня выпадающий список, я перехожу по нему подгрузились другие данные, далее переходу опять чтобы вернуть это же:
onObjectsClick: function(component, eOpts) {
        var panel = Ext.getCmp('dataview');

        store = Ext.getStore('CarStore');
        
        store.reload();


        panel.tpl = new Ext.XTemplate(
            '<tpl for=".">',
            '<table class="tabview">',
            '   <tr>',
            '       <td width=\'200px\'><input type="checkbox" enabled="enabled" value="open" name="comment_status" <tpl if="active">checked="checked"</tpl> /><img src="{host}/avl_icon/get/{id}/18/any.png">{nm}</td>',
            '       <td class="configure"></td>',
            '   </tr>    ',
            '       </table>',
            '</tpl>',
            '   ');
}


Мой код store:
Ext.define('MyApp.store.CarStore', {
    extend: 'Ext.data.Store',

    requires: [
        'MyApp.model.CarModel',
        'Ext.data.JsonStore',
        'Ext.data.proxy.Ajax',
        'Ext.data.JsonPStore'
    ],

    constructor: function(cfg) {
        var me = this;
        cfg = cfg || {};
        me.callParent([Ext.apply({
            pageSize: 999,
            storeId: 'CarStore',
            model: 'MyApp.model.CarModel',
            proxy: {
                type: 'jsonp',
            url: 'http://{host}/ajax.html?svc=core/search_items&params={spec:{itemsType:avl_unit,propName:sys_unique_id,' +
                'propValueMask:*,sortType:sys_name,propType:list},force:1,flags:0xffffffff,from:0,to:0xffffffff}' +
                    '&ssid='+Ext.util.Cookies.get("ssid"),

                callbackKey: 'callback',
                    reader: {
                            root: 'items'
                    },

    headers: '("Access-Control-Allow-Origin", "*")'
            }
        }, cfg)]);
    }
});


Данные подгрузились также но метод выбора select: 'onDataviewSelect' не доступен. Вопрос как теперь опять повесить event на DataviewSelect? Если не понятно, могу приложить скрины
Ответить с цитированием
  #16 (permalink)  
Старый 21.10.2014, 13:11
Профессор
Отправить личное сообщение для skrudjmakdak Посмотреть профиль Найти все сообщения от skrudjmakdak
 
Регистрация: 27.04.2012
Сообщений: 1,410

что значит не доступен? он вообще не отрабатывает? или может иллюзия того что не отрабатывает?
попробуте передать функцию:
select: function () {console.log('меня выбрали');}
и если можно, то киньте скрины
Ответить с цитированием
  #17 (permalink)  
Старый 21.10.2014, 13:57
Аспирант
Отправить личное сообщение для treasury Посмотреть профиль Найти все сообщения от treasury
 
Регистрация: 26.08.2014
Сообщений: 49

Сообщение от skrudjmakdak Посмотреть сообщение
что значит не доступен? он вообще не отрабатывает?
не отрабатывает
Первый скрин видно что есть div и есть возможность выбора строки,
http://s020.radikal.ru/i711/1410/14/12b41390b1b1.png

второй скрин нету div и при клике ничего не проиходит
http://s017.radikal.ru/i407/1410/1e/15a856722b33.png
Изображения:
Тип файла: jpg 222.jpg (22.9 Кб, 3 просмотров)
Тип файла: jpg 111.jpg (22.3 Кб, 1 просмотров)

Последний раз редактировалось treasury, 21.10.2014 в 15:21.
Ответить с цитированием
  #18 (permalink)  
Старый 21.10.2014, 17:01
Аспирант
Отправить личное сообщение для treasury Посмотреть профиль Найти все сообщения от treasury
 
Регистрация: 26.08.2014
Сообщений: 49

Во view в type: dataview у меня стоит select: 'onDataviewSelect', после выполнения функции onObjectsClick, у меня должно все также отрабатывать select: 'onDataviewSelect' или нужно вешать как то по новому event?
Ответить с цитированием
  #19 (permalink)  
Старый 22.10.2014, 11:18
Аспирант
Отправить личное сообщение для treasury Посмотреть профиль Найти все сообщения от treasury
 
Регистрация: 26.08.2014
Сообщений: 49

Есть какие-то идеи чтобы после использования смены шаблона в dataview: new Ext.XTemplate оставались рабочими events, к примеру click. Возможно по структуре что-то не так?
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Динамическое изменение ширины контента utb Элементы интерфейса 7 18.04.2013 17:08
Возможно ли динамическое изменение шаблона rowBodyTpl? SemKos ExtJS 1 31.08.2012 08:58
Динамическое изменение фона ячейки CyMKuH Элементы интерфейса 2 11.07.2011 15:19
Динамическое изменение <input text> baal1988 Events/DOM/Window 4 24.08.2008 17:17
Динамическое изменение размеров изображения Макс Элементы интерфейса 7 21.07.2008 16:55