Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 30.06.2016, 12:07
Аватар для Infarch
Профессор
Отправить личное сообщение для Infarch Посмотреть профиль Найти все сообщения от Infarch
 
Регистрация: 06.06.2014
Сообщений: 290

Удаление дерева моделей
Здравствуйте.

У меня есть древовидная модель, включающая в себя много других моделей. На сервере это реляционная база данных. По архитектуре приложения дочерние ноды не удаляются со стороны клиента, они убиваются на сервере вместе с родителем. И вот когда я с клиента удаляю ноду, то сначала идет запрос на ее удаление, а в догонку еще запросы на удаление деток. Я конечно мог бы на сервере добавить для этого заглушки, но не очень хочется. Предпочел бы чтоб этих дополнительных запросов вообще не посылалось. Не знает ли кто нибудь как это можно настроить?

пс. В целом такое поведение фреймворка кажется несколько странным. Если уж взялись автоматически удалять вложенные модели то логично же сначала именно их удалять, а уже потом родителя. Иначе стандартная схема много-к-одному и наличие внешних ключей сводят все это на нет. Или я не прав?
Ответить с цитированием
  #2 (permalink)  
Старый 18.07.2016, 11:27
Аватар для Infarch
Профессор
Отправить личное сообщение для Infarch Посмотреть профиль Найти все сообщения от Infarch
 
Регистрация: 06.06.2014
Сообщений: 290

Немного покопался в коде экста. Сложилось такое впечатление что мои модели удалялись бы в правильном порядке, если бы я настроил ассоциации. Ладно, начал пробовать. Нашел вот такую статью: http://extjs-tutorials.blogspot.com/...ips-rules.html и сделал у себя ассоциацию по аналогии. Только верхняя модель у меня называется SafetyRound. Однако при удалении этого самого раунда ничего не изменилось, по прежнему сначала удаляется он, а уже потом дети. Что я не так делаю?

Ext.define('SafetyRound.model.entity.SafetyRound', {
	extend: 'Ext.data.TreeModel',
	
	requires: ['SafetyRound.model.entity.SafetyRoundMeasure'],
	
	childType: 'SafetyRound.model.entity.SafetyRoundMeasure',
	
	idProperty: 'ID',
	fields: [
		{ name: 'ID', type: 'int' },
		{ name: 'SafetyRoundProject_ID', type: 'int' }
	],
	
	hasMany:[
		{
			foreignKey: 'SafetyRound_ID',
			associationKey: 'measures',
			name: 'measures',
			model: 'SafetyRound.model.entity.SafetyRoundMeasure'
		}
	],	
	
	proxy: {
		type: 'ajax',
		idParam: 'ID',
		pageParam: '',
		limitParam: '',
		startParam: '',
		reader: {
			type: 'json',
			rootProperty: 'data',
			messageProperty: 'error'
		},
		writer: {type: 'json'},
		api: {
			create: Constants.Server.CONTROLLER + '?cmd=sr.safetyround.create',
			read: Constants.Server.CONTROLLER + '?cmd=sr.safetyround.read',
			update: Constants.Server.CONTROLLER + '?cmd=sr.safetyround.update',
			destroy: Constants.Server.CONTROLLER + '?cmd=sr.safetyround.destroy'
		}
	}

});


Ext.define('SafetyRound.model.entity.SafetyRoundMeasure', {
	extend: 'Ext.data.TreeModel',

	childType: 'SafetyRound.model.entity.SafetyRoundMeasure',

	idProperty: 'ID', // if enabled, breaks correct expand/collapse operations in tree panels :((
	fields: [
		{ name: 'ID', type: 'int' },
		{ name: 'SafetyRound_ID', type: 'int' }
	],
	proxy: {
		type: 'ajax',
		idParam: 'ID',
		pageParam: '',
		limitParam: '',
		startParam: '',
		reader: {
			type: 'json',
			rootProperty: 'data',
			messageProperty: 'error'
		},
		writer: {type: 'json'},
		api: {
			create: Constants.Server.CONTROLLER + '?cmd=sr.measure.create',
			read: Constants.Server.CONTROLLER + '?cmd=sr.measure.read',
			update: Constants.Server.CONTROLLER + '?cmd=sr.measure.update',
			destroy: Constants.Server.CONTROLLER + '?cmd=sr.measure.destroy'
		}
	}

});
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Префик URL моделей и сами URL моделей khusamov ExtJS 2 19.05.2016 13:45
автоматическое удаление скоупа директивы при удаление dom узла FanAizu Angular.js 0 25.08.2015 21:38
Удаление из дерева serigc Серверные языки и технологии 0 11.11.2014 13:16
Загрузка/Сохранение дерева anonim_14 ExtJS 1 05.11.2014 21:45
Как получить порядковый номер узла дерева относительно корня Shamandrey ExtJS 2 11.11.2013 08:48