Вопрос

Button - Cannot read property 'apply' of undefined

Есть у меня галлерея изображений, которые я отображаю через Terrasoft.Button. Хочу, что бы по клику открывалось большое изображение, однако, при клике вылетает ошибка "Cannot read property 'apply' of undefined" причем дважды.

Вот такой код. Подскажите, куда копать?

getItemViewConfig: function(itemConfig, item) {
				var itemViewConfig = this.get("itemViewConfig");
				if (itemViewConfig) {
					itemConfig.config = itemViewConfig;
					return;
				}
				var config = {
					className: "Terrasoft.Container",
					id: "ImageGalleryContainer",
					items: []
				};
				config.items.push(this.generateImageConfig(item.get("itemId"), item.get("PhotosSmallURL"),
					item.get("PhotosLargeURL")));
				itemConfig.config = config;
				var x = [];
				x.push(config);
			},
 
			generateImageConfig: function(id, smallUrl, largeUrl) {
				var config = {
					id: id,
					type: ConfigurationEnums.CustomViewModelSchemaItem.CUSTOM_ELEMENT,
					style: Terrasoft.controls.ButtonEnums.style.TRANSPARENT + " cpimagebutton",
					className: "Terrasoft.Button",
					iconAlign: Terrasoft.controls.ButtonEnums.iconAlign.TOP,
					tag: id,
					click: {
						bindTo: "onImageClick"
					},
					visible: true,
					enabled: true,
					imageConfig: {
						source: Terrasoft.ImageSources.URL,
						url: smallUrl
					}
				};
 
				return config;
			},
 
			onImageClick: function() {
				debugger;
			}

 

Изображение удалено.

Нравится

3 комментария

Сто процентов вы указали что-то замудрёное в одном из параметров. Я бы начал с "style: Terrasoft.controls.ButtonEnums.style.TRANSPARENT + " cpimagebutton"" Поставил бы что-нибудь простое, вроде style: "blue".

По хорошему, запихнуть бы в контейнер обычный "чистый" button, посмотреть как отработает, потом навесить, допустим  imageConfig, проверить, и т.д

Добрый день!

сложно сказать куда копать, так как ошибка в том, что не найден какой-то метод можели. Для начала я бы рекомендовал продебажить. Остановиться в месте свала, пройтись по callstack. и возможно станет ясно, какой метод отсутствует

Варфоломеев Данила,

Разобрался, метод должен быть определен во viewmodel scope-е.

Показать все комментарии