为什么我们不应该把DOM代码和Angular代码混合在一起



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

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

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

因为角度范围和dom之间的冲突。事实上,它们处于不同的时间周期,将两者混合在一起不是一个好主意。我遇到了这个问题,最后我不得不在angular中调用一个伪函数,迫使它读取我的dom更改并应用它们。这完全是一个同步问题。

因此,如果您可以将两个代码部分放在一个控制器中,或者全部用纯js完成,结果会有更好的性能,并且更容易扩展或理解。

最新更新