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