Since using scope:truthy on a directive creates a new scope, the ng-model attribute no longer refers to the model the user intended, but instead is now one level deeper. This creates an unexpected behavior when someone is, say, using $scope.val instead of $scope.obj.val.
I don't know of any elegant way to work around this problem other than to not leverage ngModelController (which seems like poor design). Is there perhaps any way to ensure the ngModel is evaluated on the outer scope (such as by changing directive priorities) but can be accessed/modified by directives with a deeper scope?
This issue is in response to angular-ui/ui-select#18 (pinging @tkrotoff)