Nativescript将参数传递给触发事件

时间:2019-05-15 12:35:05

标签: javascript vue.js nativescript

我正在使用nativescript vue。尝试将参数传递给专业的ui-raddataform触发事件,以防止代码重复。

https://docs.nativescript.org/ns-ui-api-reference/classes/raddataform#propertycommittedevent

那是我的raddataforms布局的外观。您可以在每个RadDataForm上看到要触发的事件@propertyCommitted函数。

 <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>

对于每个此事件,都有一种看起来像这样的方法。

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();

      },

因此,每个都有4个RadDataforms和4个方法。是否可以传递参数,像这样。

<RadDataForm
                :source="aimTarget"
                myParameter1="PARAM1"
                @propertyCommitted="aimTargetCommitted"
                :metadata="aimTargetMetadata">
              </RadDataForm>

或类似的东西

<RadDataForm
                    :source="aimTarget"
                    @propertyCommitted="aimTargetCommitted(PARAM1,PARAM2)"
                    :metadata="aimTargetMetadata">
                  </RadDataForm>

然后在方法中以某种方式获取此参数的值? 然后,我将可以对所有raddataforms使用一种方法

1 个答案:

答案 0 :(得分:2)

您可以将其他参数与事件数据一起传递,

<RadDataForm
                :source="aimTarget"
                @propertyCommitted="aimTargetCommitted($event, 'param1', 'param2')"
                :metadata="aimTargetMetadata">
              </RadDataForm>

$event代表默认事件对象。