2013-07-02 4 views
3

Я имею код ExtJs 4:Extjs store.load не делает вызов

var proxy = Ext.create('Ext.data.Proxy', { 
type : 'ajax', 
    url : 'some url', 
    reader : { 
     type : 'json' 
    } 
}); 
myStore.setProxy(proxy); 
myStore.load({ // this never loads, no error in console either 
    scope : this, 
    params : { 
    }, 
    callback: function() { 
    } 
}); 

ответ

3

Ваша проблема заключается в том, что вы пытаетесь определить type при создании конкретного экземпляра суперкласса. type является действительной конфигурации, когда вы определяете прокси в конфигурации класса как Ext.data.Model Ниже приведен пример того, как это должно быть сделано (что является рекомендовать способ в большинстве случаев!):

Ext.define('User', { 
    extend: 'Ext.data.Model', 
    fields: ['id', 'name', 'email'] 
}); 

//The Store contains the AjaxProxy as an inline configuration 
var store = Ext.create('Ext.data.Store', { 
    model: 'User', 
    proxy: { 
     type: 'ajax', 
     url : 'users.json' 
    } 
}); 

store.load(); 

The Store теперь создаст экземпляр прокси-сервера с использованием применяемого свойства type, в данном случае ajax. Прокси линия выше такой же, как

new Ext.data.proxy.Ajax({ 
    url: 'users.json', 
    model: 'User', 
    reader: 'json' 
}); 

Так type является действительным свойство до тех пор, пока вы используете его в конфигурации классов, которые потребляют прокси как Ext.data.Model или Ext.data.Store

И если вы когда-нибудь понадобится, чтобы создать вам нужно создать конкретный экземпляр. Superclasses документально свои прямые подклассы в API

enter image description here

но в случае читателю, что не помогает, потому что вы только найти Server & Client, но они перечислены в разделе описания класса Types of Proxy

Виды прокси

Существует два основных типа Прокси - клиент и сервер. КЛИЕНТ прокси сохранить свои данные локально и включают в себя следующие подклассы:

  • LocalStorageProxy - сохраняет свои данные в LocalStorage, если браузер поддерживает его
  • SessionStorageProxy - сохраняет свои данные в sessionStorage если браузеры поддерживает его
  • MemoryProxy - хранит данные только в памяти какие-либо данные теряется при обновлении страницы

Proxi сервера es сохраняют свои данные , отправляя запросы на какой-либо удаленный сервер.Эти прокси включают в себя:

  • Ajax - отправляет запросы на сервер в том же домене
  • JSONP - использует JSON-P для отправки запросов на сервер на другом домене
  • Rest - использует RESTful методы HTTP (GET/PUT/POST/DELETE) для связи с сервером
  • Direct - использует Ext.direct.Manager для отправки запросов

Доверенные работают по принципу, что все операции, выполняемые являются либо Create, Read, Обновление или удаление. Эти четыре операции сопоставляются с методами , соответственно, создавать, читать, обновлять и уничтожать. Каждый прокси-подкласс реализует эти функции.

Методы CRUD каждый ожидают объект Operation в качестве единственного аргумента. Операция инкапсулирует информацию о действии, которое хранит Магазин , экземпляры модели, которые необходимо изменить, и т. Д. Для получения более подробной информации см. Операционную документацию. Каждый CRUD-метод также принимает функцию обратного вызова, которая будет вызываться асинхронно по завершению .

Прокси также поддерживают дозирование операций через пакетный объект, , вызываемый пакетным методом.

Доступно с: 1.1.0

2

Я попробовал ваш код и получил тот же результат вы описываете: Нет консольных ошибок, но без загрузки либо. Из того, что я вижу, type не является опцией конфигурации для Proxy в ExtJS 4.x, но вы можете создать экземпляр Ext.data.proxy.Ajax напрямую. Это работает для меня:

var proxy = Ext.create('Ext.data.proxy.Ajax', { 
    url : 'some url', 
    reader : { 
     type : 'json' 
    } 
}); 
+0

То, что вы заявили, это не совсем правильно, потому что это допустимое свойство при определении конфигурации внутри класса, который использует прокси-сервер. – sra

+0

Хороший вопрос! Спасибо, что упомянули об этом. – sherb

Смежные вопросы