为什么我们不应该将 DOM 代码与 Angular 代码混合在一起?

Why are we NOT supposed to mix DOM code with Angular code?

提问人:Arman Vaziri 提问时间:12/28/2021 最后编辑:Arman Vaziri 更新时间:12/28/2021 访问量:75

问:

我正在设计一个主网格和子网格,其中通过单击主网格的一行,子网格中的数据会相应地更改。为此,在单击主网格的一行后,我从子控制器调用 reloadItmes(),如下所示:

$("#masterTable tbody").on("click", "tr", function (event) {
    event.preventDefault();
    jQuery(this).addClass('selected').siblings().removeClass('selected');
    angular.element($('#childTable')).scope().reloadItems();
});

但是,我发现将 DOM 代码与 Angular 代码混合并不是一个好的做法,但我不知道这段代码会导致什么问题。

html jquery angularjs dom

评论


答:

3赞 arash yousefi 12/28/2021 #1

因为 Angular scope 和 DOM 之间的冲突。 实际上,它们处于不同的时间周期中,将它们相互混合并不是一个好主意。 我遇到了这个问题,最后我不得不在 angular 中调用一个假函数来强制它读取我的 dom 更改并应用它们。这完全是一个同步问题。

因此,如果您可以将两个代码部分放入一个控制器中,或者在纯 JS 中完成所有操作,则结果将具有更好的性能,并且更容易扩展或理解。

评论

2赞 Esaith 12/30/2021
“他们处于不同的时间周期”。100%.想象一下,在同一辆车上有来自两个不同制造商的 2 台发动机。这有点矫枉过正,可能会出现意想不到的结果。