Публикация
Создание произвольного текстового поля с типом Web #ссылка #link
16 апреля 2018 02:23
Вопрос
Как добавить поле типа web (как в детали средства связи), чтобы при клике в другой вкладке открывалась эта ссылка.
Ответ
Для превращения обычного текстового поля в ссылку, необходимо доработать diff этого поля следующим кодом:
{ "operation": "insert", "name": "AdditionalExpenses", "values": { // --> "showValueAsLink": true, "controlConfig": { "enabled": true, "href": { "bindTo": "getAdditionalExpensesLink" }, "linkclick": { "bindTo": "onExternalLinkClick" } }, // <-- "layout": { "colSpan": 12, "rowSpan": 1, "column": 0, "row": 3, "layoutName": "Tab07720f4eTabLabelGridLayout691629ea" }, "labelConfig": {}, "enabled": true, "bindTo": "AdditionalExpenses" }, "parentName": "Tab07720f4eTabLabelGridLayout691629ea", "propertyName": "items", "index": 5 },
А в секцию methods страницы добавить:
methods: { getAdditionalExpensesLink: function() { return this.getLink(this.get("AdditionalExpenses")); }, onExternalLinkClick: function() { return; }, getLink: function(value) { if (Terrasoft.isUrl(value)) { return { url: value, caption: value }; } } },
После этого поле будет со ссылкой, если указать её в правильном ссылочном формате, или скопировать из браузера. Клик из контекстного меню "Открыть в новой вкладке" откроет ссылку в новом окне, по клику первой кнопкой мыши, откроет в текущем:
Чтоб ссылка открывалась в новом окне, нужно дополнить метод onExternalLinkClick():
onExternalLinkClick: function() { var value = this.get("AdditionalExpenses"); if (!Ext.isEmpty(value)) { window.open(value, "_blank"); } return false; },
Показать все комментарии
Войдите или зарегистрируйтесь, что бы комментировать