I need it to be available only to men when opening a contact. At initialization, there are no rights to the scope. What should be done?
define("ContactPageV2", [], function() { return { entitySchemaName: "Contact", attributes: { /* The attribute for storing the availability status of the button. */ "ButtonEnabled": { "dataValueType": Terrasoft.DataValueType.BOOLEAN, "type": Terrasoft.ViewModelColumnType.VIRTUAL_COLUMN, "value": true } }, messages: { "NewPageInfo": { mode: Terrasoft.MessageMode.PTP, direction: Terrasoft.MessageDirectionType.SUBSCRIBE } }, methods: { onEntityInitialized: function() { this.callParent(arguments); this.setButtonEnabled(); this.sandbox.subscribe("NewPageInfo", function() { return this; }, this, ["SectionModuleV2_ContactSectionV2"]); }, onPageClick: function() { this.showInformationDialog("dwdwdwdwdwdwdw"); }, setButtonEnabled: function() { if (this.get("Gender").value == "eeac42ee-65b6-df11-831a-001d60e938c6") { return("ButtonEnabled", true); } else { return("ButtonEnabled", false); } } }, diff: [ { "operation": "insert", "parentName": "LeftContainer", "propertyName": "items", "name": "NewButton", "values": { "afterrerender":{bindTo: "setButtonEnabled"}, "afterrender":{bindTo:"setButtonEnabled"}, "itemType": Terrasoft.ViewItemType.BUTTON, "caption": {bindTo: "Resources.Strings.NewButtonCaption"}, "classes": {"textClass": "actions-button-margin-right"}, "click": {bindTo: "onPageClick"}, "style": Terrasoft.controls.ButtonEnums.style.BLUE, "enabled": {bindTo: "ButtonEnabled"}, } } ]/**SCHEMA_DIFF*/ }; }); define("ContactSectionV2", [], function() { return { entitySchemaName: "Contact", messages: { "NewPageInfo": { mode: Terrasoft.MessageMode.PTP, direction: Terrasoft.MessageDirectionType.PUBLISH } }, methods: { onSectionClick: function(){ var pageInfo = this.sandbox.publish("NewPageInfo", null, [this.sandbox.id]); pageInfo.onPageClick(); } }, diff: /**SCHEMA_DIFF*/[ { "operation": "insert", "parentName": "CombinedModeActionButtonsCardLeftContainer", "propertyName": "items", "name": "NewButton", "values": { "itemType": Terrasoft.ViewItemType.BUTTON, "caption": {bindTo: "Resources.Strings.NewButtonCaption"}, "classes": {"textClass": "actions-button-margin-right"}, "click": {bindTo: "onSectionClick"}, "style": Terrasoft.controls.ButtonEnums.style.RED } } ]/**SCHEMA_DIFF*/ }; });
Like
2 comments
11:18 Aug 03, 2023
Erlan Ibraev,
Hello,
This error message indicates that when the setButtonEnabled method was executing this part of code returned undefined:
this.get("Gender")
and since it returned undefined and the complete code is:
this.get("Gender").value
it tried to read value from undefined and returned an error. You need to add additional check in the code like:
setButtonEnabled: function() { if (this.get("Gender") && this.get("Gender").value == "eeac42ee-65b6-df11-831a-001d60e938c6") { return("ButtonEnabled", true);
In such case the error won't occur and the page will be loaded.
Show all comments