在Aurelia中,我可以从包含的视图模型中绑定一个要由自定义元素调用的函数吗?

安杰

我有一个自定义元素,它将接受用户输入,然后单击[保存]按钮,我想将信息传递给父视图模型,以便将其发送到服务器并移至下一部分。例如,我将简化此操作:

my-element.js

import { customElement, bindable } from 'aurelia-framework';

@customElement('my-element')
@bindable('save')
export class MyElement { }

my-element.html

<template>
    <button click.delegate="save()">Click this</button>
</template>

parent-view-model.js

export class ParentViewModel {
  parentProperty = 7;
  parentMethod() {
    console.log(`parent property: ${this.parentProperty}`);
  }
}

parent-view-model.html

<template>
    <require from="./my-element"></require>
    <div class="content-panel">
        <my-element save.bind="parentMethod"></my-element>
    </div>
</template>

有关演示,请参阅(app.js和app.html代表parent-view-model.js和parent-view-model.html):

https://gist.run/?id=96b203e9ca03b62dfb202626c2202989

有用!有点儿。不幸的是,this似乎绑定到my-element而不是parent-view-model,因此在此示例中,打印到控制台的内容是:parent property: undefined那不管用。

我知道我可以利用EventAggregator来促进自定义元素和视图模型之间的某些通信,但是如果我可以帮助的话,我希望避免增加复杂性。

阿什利·格兰特(Ashley Grant)

您有两个选择。您可以使用“自定义事件”来处理此问题,也可以使用callAnj在其答案中提到绑定来进行处理。您使用哪一个取决于您的实际用例。

如果希望自定义元素能够在父VM上调用方法并将数据该自定义元素传递出去,则应使用以下要点中所示的自定义事件:https : //gist.run/? id = ec8b3b11f4aa4232455605e2ce62872c

app.html:

<template>
    <require from="./my-element"></require>
    <div class="content-panel">
        <my-element save.delegate="parentMethod($event)"></my-element>
    </div>

    parentProperty = '${parentProperty}'
</template>

app.js:

export class App {
  parentProperty = 7;
  parentMethod($event) {
    this.parentProperty = $event.detail;
  }
}

my-element.html:

<template>
    <input type="text" value.bind="eventDetailValue" />
    <button click.delegate="save()">Click this</button>
</template>

my-element.js:

import { inject, customElement, bindable } from 'aurelia-framework';

@customElement('my-element')
@inject(Element)
export class MyElement {
  eventDetailValue = 'Hello';

  constructor(element) {
    this.element = element;
  }

  save() {
    var event = new CustomEvent('save', { 
      detail: this.eventDetailValue,
      bubbles: true
    });

    this.element.dispatchEvent(event);
  }
} 

基本上,您将附加传递detail自定义事件属性所需的任何数据在事件绑定声明中,您可以将$event一个参数添加到函数中,然后detail在事件处理程序中检查$ event属性(如果需要,也可以通过$event.detail)。

如果希望自定义元素能够在父VM上调用方法并从父VM(或从另一个自定义元素或其他东西)传入数据,则应使用call绑定。您可以通过在绑定声明中指定参数来指定要传递给方法的foo.call="myMethod(myProperty)"参数这些参数来自声明绑定的VM上下文,而不是来自Custom Element的VM)。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

自定义元素构造函数中的延迟 setAttribute 调用导致 DOM 错误。这是一个错误吗?

来自分类Dev

在Aurelia中,一个视图模型如何影响另一模型视图的绑定变量

来自分类Dev

在模板中(而不是将其包含在自定义元素中)在Aurelia中替换自定义元素吗?

来自分类Dev

我可以创建一个使用Generic.xml中的另一个自定义控件的自定义控件吗

来自分类Dev

Knockoutjs:如何检查是否在我的自定义绑定中单击了另一个元素

来自分类Dev

我可以在android中自定义视图吗?

来自分类Dev

我们可以在自定义函数中包含条件作为参数吗?

来自分类Dev

是否可以从另一个模块中的.pp文件调用在一个Puppet模块中定义的自定义Ruby函数?

来自分类Dev

是否可以从另一个模块中的.pp文件调用在一个Puppet模块中定义的自定义Ruby函数?

来自分类Dev

Aurelia-在视图模型中动态创建自定义元素

来自分类Dev

我们可以继承另一个类中的一个类中定义的自定义变量吗?

来自分类Dev

PetaPoco可以填充一个视图模型列表,每个视图模型中包含多个POCO吗?

来自分类Dev

我想要一个可以了解模型和生命周期事件的自定义可重用子视图

来自分类Dev

我可以在GSON的另一个自定义解串器中应用自定义解串器吗

来自分类Dev

是否可以在另一个应用程序中实现自定义视图?

来自分类Dev

我可以在一个元素中包含2个JavaScript onClick事件吗?

来自分类Dev

如何计算自定义 keras 损失函数中属于一个标签类的元素?

来自分类Dev

数据绑定-在另一个自定义元素中的2个自定义元素之间进行通信

来自分类Dev

是否有一个函数可以在我的古腾堡块中创建一个自定义块?

来自分类Dev

模板可以与 Aurelia 中的自定义属性一起使用吗?

来自分类Dev

可以在我的PC中包含一个文件吗?

来自分类Dev

动态在另一个自定义tagLib中调用自定义tagLib

来自分类Dev

Aurelia:绑定自定义元素的textContent吗?

来自分类Dev

我可以模拟在Python测试中另一个函数调用中调用的函数返回吗?

来自分类Dev

我可以设置一个函数来从列表中调用特定索引吗?

来自分类Dev

我们可以在ocaml中定义一个参数为0的函数吗?

来自分类Dev

我可以为PHP中的一个函数定义时间限制吗?

来自分类Dev

我可以在julia中定义一个指针吗?

来自分类Dev

我可以在内核模块中调用在内核源文件的另一个头文件中定义的静态内联函数吗?

Related 相关文章

  1. 1

    自定义元素构造函数中的延迟 setAttribute 调用导致 DOM 错误。这是一个错误吗?

  2. 2

    在Aurelia中,一个视图模型如何影响另一模型视图的绑定变量

  3. 3

    在模板中(而不是将其包含在自定义元素中)在Aurelia中替换自定义元素吗?

  4. 4

    我可以创建一个使用Generic.xml中的另一个自定义控件的自定义控件吗

  5. 5

    Knockoutjs:如何检查是否在我的自定义绑定中单击了另一个元素

  6. 6

    我可以在android中自定义视图吗?

  7. 7

    我们可以在自定义函数中包含条件作为参数吗?

  8. 8

    是否可以从另一个模块中的.pp文件调用在一个Puppet模块中定义的自定义Ruby函数?

  9. 9

    是否可以从另一个模块中的.pp文件调用在一个Puppet模块中定义的自定义Ruby函数?

  10. 10

    Aurelia-在视图模型中动态创建自定义元素

  11. 11

    我们可以继承另一个类中的一个类中定义的自定义变量吗?

  12. 12

    PetaPoco可以填充一个视图模型列表,每个视图模型中包含多个POCO吗?

  13. 13

    我想要一个可以了解模型和生命周期事件的自定义可重用子视图

  14. 14

    我可以在GSON的另一个自定义解串器中应用自定义解串器吗

  15. 15

    是否可以在另一个应用程序中实现自定义视图?

  16. 16

    我可以在一个元素中包含2个JavaScript onClick事件吗?

  17. 17

    如何计算自定义 keras 损失函数中属于一个标签类的元素?

  18. 18

    数据绑定-在另一个自定义元素中的2个自定义元素之间进行通信

  19. 19

    是否有一个函数可以在我的古腾堡块中创建一个自定义块?

  20. 20

    模板可以与 Aurelia 中的自定义属性一起使用吗?

  21. 21

    可以在我的PC中包含一个文件吗?

  22. 22

    动态在另一个自定义tagLib中调用自定义tagLib

  23. 23

    Aurelia:绑定自定义元素的textContent吗?

  24. 24

    我可以模拟在Python测试中另一个函数调用中调用的函数返回吗?

  25. 25

    我可以设置一个函数来从列表中调用特定索引吗?

  26. 26

    我们可以在ocaml中定义一个参数为0的函数吗?

  27. 27

    我可以为PHP中的一个函数定义时间限制吗?

  28. 28

    我可以在julia中定义一个指针吗?

  29. 29

    我可以在内核模块中调用在内核源文件的另一个头文件中定义的静态内联函数吗?

热门标签

归档