如何检查是否使用脏检查?

How to check if dirty checking is use?

我的 Aurelia 应用程序中有一些复杂的屏幕,我想轻松检查某些绑定是否脏检查。我可以在我所有的 属性 getter 中添加 console.log 并检查它何时被调用,但这并不容易。

理想情况下,我想在控制台中获取每个绑定使用的观察者策略,但我没有找到添加此日志的位置。

谢谢

您可以覆盖 DirtyCheckProperty 的订阅方法以添加日志记录:

import {DirtyCheckProperty} from 'aurelia-binding';
import * as LogManager from 'aurelia-logging';

const logger = LogManager.getLogger('my-app');

DirtyCheckProperty.prototype.standardSubscribe = DirtyCheckProperty.prototype.subscribe;
DirtyCheckProperty.prototype.subscribe = function(context, callable) {
  this.standardSubscribe(context, callable);

  logger.warn(`'${this.obj.constructor.name}.${this.propertyName}' is being dirty checked`, this.obj);
}

消息在控制台中看起来像这样:

这是一个 运行 示例应用程序:

https://gist.run/?id=2c863d48a2a711b8c5f93df2bb7c4a3b