я так понял, что я буду вам 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>
|
Цитата:
|
Разобрался, оказывается у меня запрос отправлялся локально на сервер по localhost, оказывается ему это не нравится, пришлось домен прописать и все заработало. Спасибо, skrudjmakdak
Данные то вывелись все ок, но данные как-то одним блоком, т.е. не так как в dataview, теперь не могу применить onDataviewSelect к данным. Т.е. где-то затерялся в DOM div с class="x-dataview-item x-item-selected" |
если еще не разобрались с этой проблемой, то показывайте свой код, я не экстрасенс
|
Цитата:
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¶ms={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? Если не понятно, могу приложить скрины |
что значит не доступен? он вообще не отрабатывает? или может иллюзия того что не отрабатывает?
попробуте передать функцию: select: function () {console.log('меня выбрали');} и если можно, то киньте скрины |
Вложений: 2
Цитата:
Первый скрин видно что есть div и есть возможность выбора строки, http://s020.radikal.ru/i711/1410/14/12b41390b1b1.png второй скрин нету div и при клике ничего не проиходит http://s017.radikal.ru/i407/1410/1e/15a856722b33.png |
Во view в type: dataview у меня стоит select: 'onDataviewSelect', после выполнения функции onObjectsClick, у меня должно все также отрабатывать select: 'onDataviewSelect' или нужно вешать как то по новому event?
|
Есть какие-то идеи чтобы после использования смены шаблона в dataview: new Ext.XTemplate оставались рабочими events, к примеру click. Возможно по структуре что-то не так?
|
| Часовой пояс GMT +3, время: 20:06. |