问题:我有两个类,希望通过从另一个类调用一个类来更新一个类的视图中的变量。让我详细说明一下。
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);
}
}
export class OtherClass {
constructor(){
this.oldMessage = "";
}
activate(){
this.oldMessage = "Yo!";
}
changeMessage(message){
this.oldMessage = message;
}
}
<template>
${oldMessage}
</template>
我知道新消息正在被带来,因为当我在changeMessage中为传入消息执行console.log时,我可以看到它,但View没有使用新消息进行更新。任何帮助将不胜感激。
答案 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