【问题标题】:Nativescript pass parameters to fired eventNativescript 将参数传递给触发事件
【发布时间】:2019-05-15 12:35:05
【问题描述】:

我正在使用原生脚本 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>

对于每个 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();

      },

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

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

或者类似的东西

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

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

【问题讨论】:

    标签: javascript vue.js nativescript


    【解决方案1】:

    您可以将额外的参数与事件数据一起传递,

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

    其中$event代表默认事件对象。

    【讨论】:

    • yyyym。 param1 是变量的值还是名称?准确描述我想要 param1='xxx' 并将其传递给方法以及如何检索此参数的方法值?像这样的东西? console.log(data.object.param1);
    • 他提供的示例它们是字符串文字。但你可以使用其他一些变量。如果您正在谈论向 @propertyCommitted 事件添加属性,我认为您必须深入了解该事件实际触发的位置。以他的例子。 @propertyCommitted="aimTargetCommitted($event, 'param1', 'param2') 你需要一个方法 aimTargetCommitted(evt, par1, par2) 来产生变量 evt=(the original event) par1='param1' par2='param2'
    • 好。像你写的那样做。目标目标提交(evt,par1,par2)。在函数 console.log(par1) 中并给出 'param1' 。非常感谢你们
    猜你喜欢
    • 1970-01-01
    • 2012-11-13
    • 2017-01-05
    • 1970-01-01
    • 2022-11-11
    • 1970-01-01
    • 1970-01-01
    • 2013-05-31
    • 1970-01-01
    相关资源
    最近更新 更多