title: issues with select field's empty option
body: <p>We are facing multiple issues with select field's empty option.</p>
  
  <p>My rendering code is as follows:</p>
  
  <pre><code>&amp;#60;select ng-switch-when="select" id="{{field.name}}" ng-model=data[field.name] &gt;
  &amp;#60;option ng-repeat="option in field.options" value="{{option.value}}"&gt;{{option.description}}
  &amp;#60;/select&gt;
  </code></pre>
  
  <p>Here our UI is dynamically generated and options also populates dynamically using REST APIs. The Select field is bound to a data object that also populated using REST calls that might have blank value initially.</p>
  
  <p>Issue </p>
  
  <ol>
  <li>It automatically adds a empty option where it is not required and disappear after selecting any non-empty option.</li>
  <li>Also it is showing following error for few select fields</li>
  </ol>
  
  <blockquote>
    <p>TypeError: Cannot call method 'prop' of undefined
        at selectDirective.link.ngModelCtrl.$render (lib/angular/angular.js:20165:47)
                at Object.ngModelWatch (lib/angular/angular.js:16734:14)
                at Scope.$get.Scope.$digest (lib/angular/angular.js:11800:40)
                at Scope.$get.Scope.$apply (lib/angular/angular.js:12061:24)
                at done (lib/angular/angular.js:7843:45)
                at completeRequest (lib/angular/angular.js:8026:7)
                at XMLHttpRequest.xhr.onreadystatechange (lib/angular/angular.js:7982:11)</p>
  </blockquote>
  
  <p>I have doubt that is use following code in angular</p>
  
  <pre><code>function setupAsSingle(scope, selectElement, ngModelCtrl, selectCtrl) {
  ngModelCtrl.$render = function() {
  var viewValue = ngModelCtrl.$viewValue;
  
    if (selectCtrl.hasOption(viewValue)) {
      if (unknownOption.parent()) unknownOption.remove();
      selectElement.val(viewValue);
      if (viewValue === '') emptyOption.prop('selected', true); // to make IE9 happy
    } else {
      if (isUndefined(viewValue) &amp;&amp; emptyOption) {
        selectElement.val('');
      } else {
        selectCtrl.renderUnknownOption(viewValue);
      }
    }
  </code></pre>
  
  <p>...</p>
  
  <p>and it break at this line</p>
  
  <pre><code>if (viewValue === '') emptyOption.prop('selected', true); // to make IE9 happy
  </code></pre>
  
  <p>because the empty option is provided by REST API at later stage and not available till initial rendering.</p>
  
  <p>Please provide some suggestion for implementation and some alternate approach.</p>
  
  <p>P.S : I can not use ng-option with select as it emit indexed values and I need actual values for some DOM manipulation.</p>