【发布时间】:2019-02-26 16:36:14
【问题描述】:
我正在尝试实现一个指令来实现一次性绑定,所以当我使用这个指令时,我想使用one time binding。
我做了这个例子; https://stackblitz.com/edit/angular-bhayzy
在我的 HTML 中,我有:
<div>
message: {{labels.message('hello')}}
</div>
<div *oneTime>
message one-time: {{labels.message('secondHello')}}
</div>
Labels 是一个带有消息功能的类:
public static message(field): string {
console.log('called: ', field);
return this.MYCLASS.LABELS[field] || 'no message';
};
启动应用程序后,我得到 6 个带有消息的控制台,3 个用于“hello”,还有 3 个用于“secondHello”,但在这个 HTML 元素中我有 *oneTime。
调试 OneTimeDirective 好像我从来没有输入过指令...
【问题讨论】:
-
你真的应该考虑创建一个custom pipe。它将有效地缓存结果以避免不必要的调用/执行,并且比
oneTime指令更直接。 -
嗨,谢谢,但我的管道也有同样的问题,我有 4 个控制台:stackblitz.com/edit/angular-djwvh2
-
您可能希望从该示例中删除
pure: false。
标签: angular label angular-directive two-way-binding one-time-binding