Aurelia - 没有由computeFrom 装饰器引用的嵌套数组的ModifyCollectionObserver?

标签 aurelia

所以让我们假设我的类(class)是这样的:

import { computedFrom } from 'aurelia-framework';

export class Test {

    myObj;

    @computedFrom('myObj.myArray')
    get someProperty() {
        debugger;
        return JSON.stringify(this.myObj ? this.myObj.myArray : this.myObj);
    }

    attached() {
        this.myObj = {
            myArray: []
        };

        setTimeout(() => this.myObj.myArray.push('foo'), 500);
    }

}

我的 HTML 只是:

<template>
    <h3>myArray value: ${someProperty}</h3>
</template>

我遇到一个问题,当我将元素插入 myObj.myArray 时,someProperty 未更新。我使用 someProperty getter 中的调试器验证了这一点。当 this.myObj 最初在 attached 中设置并且随后调用 someProperty getter 时,我看到 myObjthis.__observers__ 中的 SetterObserver

但是,我在 this.myObj.__observers__ 中没有看到任何 myArrayModifyCollectionObserver (事实上,__observers__ 属性甚至不存在)。我希望数组上会有某种观察者,因为它在我的 compulatedFrom 装饰器中被指定为依赖项。

最佳答案

您可以将您的 compulatedFrom 装饰器更改为以下内容,事情就会开始工作:

 @computedFrom('myObj.myArray.length')

这是因为当您将项目插入数组时,length 属性将会发生变化,并且 Aurelia 可以观察到该变化。

关于Aurelia - 没有由computeFrom 装饰器引用的嵌套数组的ModifyCollectionObserver?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43371385/

相关文章:

奥里莉亚组成

aurelia - 将自定义属性传递给 Aurelia 组件

javascript - 将 system.js 文件从 jspm_packages 移至另一个文件夹,不会解析配置中的包

Aurelia验证: applying some rule on change and some on blur on same property

Aurelia class.bind 不触发函数

javascript - 使用 Aurelia 进行 Firebase 角色授权

Aurelia 自定义元素和内容

javascript - 来自 UglifyJs SyntaxError : Unexpected token: name (Handler) 的 bundle.js 中的错误

javascript - 用于持久项目的 AureliaJS

aurelia - 使用 Aurelia <content> 元素