使用Aurelia,从另一个类更新一个类中的绑定属性

时间:2016-01-22 18:33:41

标签: javascript aurelia

问题:我有两个类,希望通过从另一个类调用一个类来更新一个类的视图中的变量。让我详细说明一下。

thisClass.js:

import {inject} from "aurelia-framework";
import {OtherClass} from "/otherClass";

@inject(OtherClass)
export class ThisClass {
    constructor(otherClass){
        this.otherClass = otherClass;
    }

    callLoader(){
        this.message = "Hi There!";
        this.otherClass.changeMessage(this.message);
    }
}

otherClass.js:

export class OtherClass {
    constructor(){
        this.oldMessage = "";
    }

    activate(){
        this.oldMessage = "Yo!";
    }

    changeMessage(message){
        this.oldMessage = message;
    }
}

otherClass.html

<template>
    ${oldMessage}
</template>

我知道新消息正在被带来,因为当我在changeMes​​sage中为传入消息执行console.log时,我可以看到它,但View没有使用新消息进行更新。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

当您注入otherClass时,aurelia会为您创建一个单例,但它不是由模板引擎创建的视图。

您可以使用aurelia-event-aggregator https://stackoverflow.com/a/32207501/3436921

进行pubsub消息传递。

如果你喜欢这样的话:

<my-component ref="myComp"></my-component>

你可以调用myComp.au.controller.myCompMethod(),但对我来说,这不是一个好的模式,如果你需要传递数据,最好使用绑定。

EDITED:以下示例显示了组件之间的两种通信方式,pubsub消息传递和函数调用处理。http://plnkr.co/edit/DuDO87wAsgM9QjtGBb9J