我正在使用AngularJs ng-show
,ng-hide
作为控件,并且在不同情况下在javascript中使用show()
,hide()
。但只有ng-show
和ng-hide
正在运行,不允许使用jQuery show()
和hide()
。
对于以下div
,我使用了ng-show
并且工作正常:
<div class="generic_error_message" id="genericmsg" ng-show="(QuoteNew.$invalid && submitted) ||(QuoteNew.Birthdate.$pristine && submitted)">
对于同一个div,我在做一些服务调用后使用jQuery来处理不同的条件:
if (!formvalid || !dependentvalid || !InsExistvalid1 || !InsExistvalid2 || postcodeValid || ($('#getQuote').hasClass('ng-invalid')) || !validDependents)
{
e.preventDefault();
$("#genericmsg").show();
}
此处show()
不起作用...
努力解决它。请有人帮帮我......
答案 0 :(得分:3)
无聊的答案,但现在是。不要那样做:)
Angular ng-show和ng-hide在对象上设置强制 display:none 的特定类。 jQuery不知道Angular,所以当它试图再次显示该元素时,它不能取消该类。试图用jQuery和Angular来操纵相同的元素可能会导致很多像这样的问题,所以选择一个并坚持下去(至少对于那个元素)。
编辑:更具体一点。 Angular使用 display:none!important 设置/删除类,而jQuery直接在元素上添加/删除 display:none 。由于Angular使用重要,因此在这种情况下它会取代jQuery。
另请注意,它也没有反过来。如果jQuery隐藏了一个元素,Angular无法显示它,因为Angular只会确保它所使用的类不在那里,它无法知道你用其他东西来隐藏元素。