Javascript-форум (https://javascript.ru/forum/)
-   ExtJS (https://javascript.ru/forum/extjs/)
-   -   Ext.data.Model.idProperty (https://javascript.ru/forum/extjs/51759-ext-data-model-idproperty.html)

Infarch 18.11.2014 18:05

Ext.data.Model.idProperty
 
Здравствуйте.

У меня есть модель, в которой определен idProperty:

Ext.define("PM.model.entity.Role", {
	extend: "Ext.data.Model",
	idProperty: "ID",
	fields: [
		{ name: "ID",
			type: "int"
		},
		{ name: "PMLevel_ID",
			type: "int"
		},
		"Name"
	],
	proxy: {
		type: "ajax",
		pageParam: "",
		limitParam: "",
		startParam: "",
		reader: {
			type: "json",
			rootProperty: "data",
			messageProperty: "msg"
		},
		api: {
			create: "/json?cmd=pm.role.create",
			update: "/json?cmd=pm.role.update",
			read: "/json?cmd=pm.role.read"
		}
	}
});


Теперь я хочу загрузить модель с сервера:

model = PM.model.entity.Role.load(record.get("ID"), {
  success:...
});


В результате получается вот такой запрос:

http://localhost/json?cmd=pm.role.re...22383262&id=14

Как видите, id в запросе в нижнем регистре, хотя в модели верхний регистр. Это мне не подходит, начал искать как пофиксить. В процессе экспериментов я наткнулся на другую интересную вещь:

...
	idProperty: "foo",
	fields: [
		{ name: "foo",
			type: "int"
		},
...


Меняю имя поля на нечто совсем другое, а запрос все с тем же "id" получается. В чем дело, как все же поменять имя этого айди?

siber-biber 19.11.2014 08:33

никак не поменять ..не смотрит этот метод на idProperty

можно попробовать во второй параметр передать в явном виде:
model = PM.model.entity.Role.load(record.get("ID"), {
  foo : record.getId(),
  success:...
});

Infarch 19.11.2014 12:23

Это не будет работать. Все, что после айди, идет в качестве параметров в объектный (не статический) метод load, а там используется для создания операции. Значения полей там не задаются.

Infarch 20.11.2014 12:26

На офф форуме ответили:
See: http://docs.sencha.com/extjs/5.0/api...er-cfg-idParam

Вот так вот... не тот параметр пытался юзать.


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