1

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

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

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

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

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

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

4

1 回答 1

1

首先要了解您的问题:为什么要避免这里的角度变化检测?我想到的唯一原因是严重的性能问题。

在这里的一种情况下,有一两千个输入,都带有绑定。该应用程序有点迟钝,但仍然可以使用。我们接受了这一点,因为否则我们必须手动重新实现所有绑定。

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

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

于 2020-01-15T14:32:29.790 回答