2016-05-10 7 views
0

Ich habe versucht, das Problem von this SO question zu beheben, das mit temporären leeren <select> Optionen zu tun hat, weil ng-model nicht mit einer Option übereinstimmt.Warum erscheint meine Direktive (über den Link) nicht und erlaubt ng-model das zu sehen?

Die Lösung die folgende Zeile funktioniert perfekt zu bedienen, aber nur, wenn ich falle, dass HTML-Code direkt in:

<option style="display:none" value="">(select)</option> 

Ich habe eine Richtlinie erstellt den „(Auswahl),“ Text zu standardisieren und dass leere Option erstellen bei Bedarf:

leer-default-option.js

(function() { 
    'use strict'; 

    function EmptyDefaultOptionDirective() { 
     return { 
      restrict: 'A', 
      link: function (scope, element) { 
       element.prepend('<option style="display:none" value="">(select)</option>'); 
      } 
     }; 
    } 

    angular.module('utils.empty-default-option', []) 
     .directive('emptyDefaultOption', EmptyDefaultOptionDirective); 
}()); 

Dies funktioniert nicht, wenn in der HTM verwendet L-Datei:

context.html

<select class="form-control" 
     ng-model="context.contextChoice" 
     empty-default-option> 
      <option ng-repeat="choice in context.choices_data | orderBy:'id'">{{choice.first_name}} {{choice.last_name}}</option> 
</select> 

(context.jscontextChoice = "" setzt, so dass ich glaube nicht, dass es das ist. controllerAs: 'context', auch.)

Ich bekomme immer noch eine temporäre leere leere Option, die für mich bedeutet, dass meine Richtlinie Option nicht gesehen wurde. Ich habe das Gefühl, dass dies mit Link versus Controller zu tun hat, vielleicht, oder mit dem Timing, wenn Dinge gescannt oder überprüft werden, aber ich habe Probleme, Antworten zu finden.

Danke fürs Lesen!

+1

verwenden 'ng-repeat' nicht für' '