Reputation: 47
Im using nativescript vue. Trying to pass parameters to professional ui - raddataform fired events to prevent duplicating code.
https://docs.nativescript.org/ns-ui-api-reference/classes/raddataform#propertycommittedevent
Thats how looks my layout with raddataforms. You can see on every RadDataForm there is separate on event @propertyCommitted functions to fire.
<StackLayout>
<RadDataForm
:source="aimTarget"
@propertyCommitted="aimTargetCommitted"
:metadata="aimTargetMetadata">
</RadDataForm>
<RadDataForm
:source="fasterAimHot"
@propertyCommitted="fasterAimHotCommitted"
:metadata="fasterAimHotMetadata">
</RadDataForm>
<RadDataForm
:source="runeAimerCrosshair"
@propertyCommitted="runeAimerCrosshairCommitted"
:metadata="runeAimerCrosshairMetadata">
</RadDataForm>
</StackLayout>
and for every this event there is a method which one looks like this.
attackMonstersCommitted (data) {
let edited = data.object.editedObject; // it has to be performed to update radDataForm with new value object
let tab = "attackerTab"; // to know which tab to edit
let name = "attackMonsters";
let property = data.object.getPropertyByName(data.propertyName);
console.dir("valueCandidate - " + property.name);
this.$store.commit('updateRadData', { edited , tab, name } ) // update raddataform
this.$update.propertyCommitted();
},
So there are 4 RadDataforms and 4 methods for every one. Is there possibility to pass parameters, something like this.
<RadDataForm
:source="aimTarget"
myParameter1="PARAM1"
@propertyCommitted="aimTargetCommitted"
:metadata="aimTargetMetadata">
</RadDataForm>
or smething like this
<RadDataForm
:source="aimTarget"
@propertyCommitted="aimTargetCommitted(PARAM1,PARAM2)"
:metadata="aimTargetMetadata">
</RadDataForm>
and then in method somehow get value of this parameters ? Then I will be able to use one method for all raddataforms
Upvotes: 1
Views: 425
Reputation: 21908
You can pass extra parameters along with event data,
<RadDataForm
:source="aimTarget"
@propertyCommitted="aimTargetCommitted($event, 'param1', 'param2')"
:metadata="aimTargetMetadata">
</RadDataForm>
Where $event
represents the default event objet.
Upvotes: 3