Aurelia 奥雷利亚<;撰写>;model.bind什么触发更改事件?

Aurelia 奥雷利亚<;撰写>;model.bind什么触发更改事件?,aurelia,Aurelia,在Aurelia中,我们能够使用元素动态组合视图模型和视图。我们还可以通过model.bind提供数据对象,然后通过提供的viewmodel的activate方法访问该对象 我的问题是,什么条件会触发所提供模型数据的更改事件?如果我更改了所提供对象的属性,我的是否会激活将此对象作为第一个参数的方法以查看更改?或者是否需要替换整个对象以触发更改?当模型绑定到视图模型时,激活(模型)会被调用一次。当模型属性更改时,这些更改将反映在组合视图模型中,因为模型是引用,而不是副本 例如,假设我有一个视图/视

在Aurelia中,我们能够使用
元素动态组合视图模型和视图。我们还可以通过
model.bind
提供数据对象,然后通过提供的viewmodel的
activate
方法访问该对象

我的问题是,什么条件会触发所提供模型数据的更改事件?如果我更改了所提供对象的属性,我的
是否会激活将此对象作为第一个参数的
方法以查看更改?或者是否需要替换整个对象以触发更改?

当模型绑定到视图模型时,
激活(模型)
会被调用一次。当模型属性更改时,这些更改将反映在组合视图模型中,因为模型是引用,而不是副本

例如,假设我有一个视图/视图模型,它是路线的目标,如下所示(这个示例不是一个完全清晰的示例,因为我也在试验其他东西,但它应该足够清晰):

视图:此视图创建了两个由

分隔的部分。顶部仅显示每个视图的
model.message
。底部为每个视图创建一个

<template>
  <div repeat.for="view of openViews">
    <p>${view.model.message}</p>
  </div>
  <hr>
  <div repeat.for="view of openViews">
    <compose view-model.bind="$parent.getViewFromType(view)" model.bind="view.model">
    </compose>
  </div>
</template>
编辑器视图和视图模型如下所示:

<template>
  <h1>${model.message}</h1>
  <form>
    <input type="text" value.bind="model.message">
  </form>
</template>
您将看到
ZenStudio
视图显示与
EditorView
相同的
model.message
。当用户编辑
中消息的值时,这些值会在顶层视图以及相应的
视图中正确更改

虽然我没有示例,但如果您在
openViews
列表中添加了另一项,则会在顶层视图中添加另一个子视图和显示新消息的另一行。
repeat.for
将侦听对列表所做的加减操作,并正确创建/删除合成元素


希望这能回答你的问题。

我写了一个例子,做了一些测试,每次都能反映出变化。也许你应该提供一些代码和你的EXACT用例,这样更容易帮助你,因为这不适用于任何现有的应用程序或代码。出于文档目的,这个问题更高层次。Aurelia中的绑定系统,观察到什么,如何以及何时是框架的未知组件之一。Aurelia文档很少解释像这样的事情。因为我现在没有用例,所以我没有代码。那么,如果对象的属性在测试中发生更改,那么该值是否已更新?也许它是通过引用传递的?数组是用push、pop等方法更新的,如本答案中所述。属性的值更改时会更新属性。在激活视图之前,
activate
方法被调用一次。这确实回答了我的问题,还有更多的问题。再次感谢。
<template>
  <h1>${model.message}</h1>
  <form>
    <input type="text" value.bind="model.message">
  </form>
</template>
export class EditorView {
  constructor() {
  }

  created(owningView, thisView) {
    this.view = thisView;
    this.parentView = owningView;
  }

  activate(model) {
    // Keep track of this model
    this.model = model;
  }
}