AngularJS ng if和DOM编译

AngularJS ng if和DOM编译,angularjs,angular-ng-if,Angularjs,Angular Ng If,我在我的页面上使用datepicker控件,如果依赖于特定的下拉值,则通过ng呈现该控件 我面临的问题是,在渲染时,datepicker输入不是DOM的一部分,因此稍后当我更改dropdown的值时,datepicker控件不起作用 如果我使用ng show,我会在验证中遇到问题 有什么建议吗 谢谢。使用ng show/ng hide而不是ng if,因为ng if指令基于表达式删除或重新创建DOM树的一部分。如果分配给ng If的表达式的计算结果为假值,则该元素将从DOM中删除,否则该元素的克

我在我的页面上使用datepicker控件,如果依赖于特定的下拉值,则通过ng呈现该控件

我面临的问题是,在渲染时,datepicker输入不是DOM的一部分,因此稍后当我更改dropdown的值时,datepicker控件不起作用

如果我使用ng show,我会在验证中遇到问题

有什么建议吗


谢谢。

使用
ng show/ng hide
而不是
ng if
因为
ng if
指令基于表达式删除或重新创建DOM树的一部分。如果分配给
ng If
的表达式的计算结果为假值,则该元素将从DOM中删除,否则该元素的克隆将重新插入DOM


更多细节。请参阅此链接:

在切换ng if变量后尝试“$scope.apply()”。

如果是ng显示/隐藏,我必须手动处理验证,对吗?@AliHassan Nope<代码>ng显示如果,也可以作为
ng工作。您只需将您在
ng if
表达式中提到的表达式放入。谢谢Ramesh,让我看一下。值得添加的是,ng if还创建了一个新的作用域,它可能有其缺点。@AliHassan
ng show
ng if
不同。主要区别在于,第一种方法只使用css
display:none
隐藏元素,而第二种方法从DOM中删除元素。这意味着ng show将保留验证错误,因为ngModelController仍然可用。您能在plnkr重新创建您的代码吗?您使用哪种日期选择器?还是自制的?你试过使用ControllerAs语法吗?