KarolekMasterek
KarolekMasterek

Reputation: 47

Nativescript pass parameters to fired event

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

Answers (1)

Manoj
Manoj

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

Related Questions