The real issue is that since a new scope is being created (unlike the ng-show directive but similar to the ng-switch directive) you may have problems if you bind ng-model on an element within the ui-if to a primitive that is defined in the parent scope outside the ui-if