Создание произвольного текстового поля с типом 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;
},
Показать все комментарии
Войдите или зарегистрируйтесь, что бы комментировать