首页 > 解决方案 > 隐藏元素时如何防止AngularJs将模型值设置为null?

问题描述

<select ng-model="model.typeId" ng-show="AllowToChangeType(model)" 
        ng-options="item.value as item.text for item in model.types">
</select>

问题是,当用户单击Save按钮时,表单会重新生成为不可编辑模式,AllowToChangeType()返回false,并且当它<select>隐藏时,model.typeId设置为null. 然后,如果用户Edit再次点击,它<select>会重新生成,但其中没有任何选择,尽管数据已正确保存。理想情况下,<select>应该显示保存的值。如何解决这个问题?

标签: angularjs

解决方案


我认为你做出了一些不正确的假设。ng-show隐藏元素时不会删除模型值,正如这个 plunker 证明的那样:https ://plnkr.co/edit/knnLRZcHdQuukGawU8iyJ?p=preview

ng-show/ng-hide不重新生成 DOM 元素,它们只是改变可见性属性


推荐阅读