手动插入一次性绑定

Interpolate a one-time binding manually

如何手动插入一次性绑定?

这是我的用例。 我有很多元素的列表。元素只是一组控件。我从 BE 获取元素的数据。然后我想利用 AngularJS 插值并设置控件的值。但是我想避免每次只改变一个控件时所有元素的插值。

所以,我使用一次性绑定来设置值,但是当我更改它们时,它们不会更新。

示例中的预期结果是,一旦在控件中键入内容,相应的一次性绑定值就会更新。此外,一次性绑定应该保留在那里,因为在我的真实情况下会有很多控件,我不想在只与一个控件交互时影响性能。可以找到我的一个简化示例 here(在我的真实情况下,我不仅有输入,还有复选框,但我相信它们的方法应该相同)。

经过研究,我发现在这种情况下应该使用指令。但是我找不到一个简单易懂的例子。那么,有人可以 post 吗?

这里也欢迎不同于指令的解决方案。

首先要了解你的问题:为什么你想避开这里的angular变更检测?我想到的唯一原因是严重的性能问题。

在一个案例中,有一两千个输入,都带有绑定。该应用程序有点迟钝,但仍然可用。我们接受了这一点,因为我们必须手动重新实现所有绑定。

如果您的绑定相当简单(没有验证、转换等)并且值在编辑时不会显示在其他地方,也许您可​​以使用 AngularJS本机 HTML Input 元素上的指令,它只侦听其 onChange 事件以保存更改的数据,并在您知道它从外部发生更改时以编程方式更新(如果有的话)。

(不是谈论更好地使用 Angular,它对变化检测有更严格的控制;-))。