提问人:Arman Vaziri 提问时间:12/28/2021 最后编辑:Arman Vaziri 更新时间:12/28/2021 访问量:75
为什么我们不应该将 DOM 代码与 Angular 代码混合在一起?
Why are we NOT supposed to mix DOM code with Angular code?
问:
我正在设计一个主网格和子网格,其中通过单击主网格的一行,子网格中的数据会相应地更改。为此,在单击主网格的一行后,我从子控制器调用 reloadItmes(),如下所示:
$("#masterTable tbody").on("click", "tr", function (event) {
event.preventDefault();
jQuery(this).addClass('selected').siblings().removeClass('selected');
angular.element($('#childTable')).scope().reloadItems();
});
但是,我发现将 DOM 代码与 Angular 代码混合并不是一个好的做法,但我不知道这段代码会导致什么问题。
答:
3赞
arash yousefi
12/28/2021
#1
因为 Angular scope 和 DOM 之间的冲突。 实际上,它们处于不同的时间周期中,将它们相互混合并不是一个好主意。 我遇到了这个问题,最后我不得不在 angular 中调用一个假函数来强制它读取我的 dom 更改并应用它们。这完全是一个同步问题。
因此,如果您可以将两个代码部分放入一个控制器中,或者在纯 JS 中完成所有操作,则结果将具有更好的性能,并且更容易扩展或理解。
评论
2赞
Esaith
12/30/2021
“他们处于不同的时间周期”。100%.想象一下,在同一辆车上有来自两个不同制造商的 2 台发动机。这有点矫枉过正,可能会出现意想不到的结果。
评论