2016-04-28 48 views
0

我有一个类,看起来像这样:我怎么能对财产作出反应改变

export class Transaction { 

    public status: string; 
    public nextStatus: string; 
    public previousStatus: string; 

    private getNextStatus(): string { 
     // ... 
    } 

    private getPreviousStatus(): string { 
     // ... 
    } 
} 

每次状态属性改变,我想重新计算下一个和以前的状态。有没有办法倾听财产变化?

我无法使用函数来设置状态,因为这些对象是从数据库中检索并从JSON中解析出来的。所以,不幸的是这是行不通的:

public setStatus(newStatus: string) { 
    this.status = newStatus; 
    this.nextStatus = this.getNextStatus(); 
    this.previousStatus = this.getPreviousStatus(); 
} 
+1

这不是一个真正的打字问题,在运行时你只有javascript。过去有一些API(例如[Object.prototype.watch()](https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Object/watch),但作为据我所知,标准中没有任何标准,你可能需要自己处理这个问题,添加'javascript'标签。 –

回答

0

一下怎么样当前事务对象,如果从JSON /数据库调用得到一个新的交易:

currentTxn.setStatus(newTxn.status) 

,然后扔掉newTxn。

请注意,如果您正在处理多线程,另一个线程可能会看到状态,但会读取prevStatus,并且这两个值将不一致。您可以通过让setStatus使用事务内存或锁定对Transaction中的任何字段的访问来避免这种情况。