Javascript-форум (https://javascript.ru/forum/)
-   ExtJS (https://javascript.ru/forum/extjs/)
-   -   Изменение данных при загрузке в модели (https://javascript.ru/forum/extjs/30910-izmenenie-dannykh-pri-zagruzke-v-modeli.html)

LimYoHwan 20.08.2012 12:11

Изменение данных при загрузке в модели
 
Есть код:

Ext.define('Pkasko.model.Models', {
    extend: 'Ext.data.Model',
    fields: ['model_id', 'id', 'text', 'power', 'weight', 'price'],
    proxy: {
        type: 'ajax',
        url: '/ajax/getModels.php',
        reader: {
            type: 'json',
            root: ''
        },
     afterRequest: function(req, res) {


            Ext.Array.each(req.operation.response, function(val, index, selflink)
			{

			
				var json = Ext.decode(val.responseText);
				var result = '';
							
				Ext.Object.each(json, function(ind2, val2, selflink2)
				{
					var ind = ind2;
					Ext.Object.each(val2, function(val3, val3, selflink3)
					{
						if(ind != '')
						{
							result += '[model_id: "'  + ind + '", id: "'  +  val3.id + '", text: "' + val3.text  + '", power: "' + val3.power  + '", weight:"' +  val3.weight + '", price: "' + val3.price + '"],';
						}
					});
				});
				
				this.responseText = result.substring(0, result.length - 1);
				
				console.log(this);
				

			});
        }

    }
});



В методе afterRequest я привожу данные к пригодному для extjs вида (итоговая переменная results), можно ли передать эту переменную модели?

:-?

Ex_Soft 20.08.2012 14:56

Если я правильно Вас понял Ext.data.Model.load()?

P.S. Только у Вас:
result += '[...'  + ... + '...],';

Замените на { }, раз уж reader: { type: 'json'...
Ну, и значения уже незачем, ессесно акромя string'ов, в " " заворачивать...

LimYoHwan 20.08.2012 15:17

Спасибо за ответ, Ex!

Алгоритм такой:

1) получаю ajax с результатами запроса
2) привожу результаты запроса в нормальный вид
3) подставляю в модель

Я совсем недавно с extjs, поэтому если приведете примерчик - буду благодарен

Ex_Soft 20.08.2012 15:25

А зачем столько телодвижений? Handler Ваш? Можете сразу отдать данные в нужном формате?

Цитата:

Сообщение от LimYoHwan (Сообщение 199026)
если приведете примерчик

Ext.define("TestModel1", {
	extend: "Ext.data.Model",
	idProperty: "id",
	fields: [
		{ name: "id", type: "int" },
		{ name: "name", type: "string" }
	],
	proxy: {
		type: "memory",
		reader: {
			type: "json"
		}
	}
});

var
	r = Ext.create("TestModel1", {
		id: 1,
		name: "Record# 1"
	});

if(window.console && console.log)
	console.log("%o", r);

LimYoHwan 20.08.2012 15:37

Цитата:

Сообщение от Ex_Soft (Сообщение 199034)
А зачем столько телодвижений? Handler Ваш? Можете сразу отдать данные в нужном формате?


Ext.define("TestModel1", {
	extend: "Ext.data.Model",
	idProperty: "id",
	fields: [
		{ name: "id", type: "int" },
		{ name: "name", type: "string" }
	],
	proxy: {
		type: "memory",
		reader: {
			type: "json"
		}
	}
});

var
	r = Ext.create("TestModel1", {
		id: 1,
		name: "Record# 1"
	});

if(window.console && console.log)
	console.log("%o", r);

О таком варианте думал. Думаю так и сделаю! Спасибо :) Плюсик

Ex_Soft 20.08.2012 15:40

/me думает: только, вот, оверквотить-то зачем?..


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