2016-08-14 4 views
0

Ich arbeite an einem Projekt mit eckigen. In diesem Projekt habe ich eine Dropdown-Direktive erstellt. diese Richtlinie hat einen Erhaltungs-Anforderungs das Dropdown-Menüangular http funktioniert nicht unter sehr spezifischen Bedingungen

jetzt einige Seiten haben mehrere Dropdown-Listen zu füllen und unter einigen sehr speziellen Umständen die HTTP-Anforderung wil auf die Antwort vom Server nicht reagieren (altough es sagt, es ist es gesendet)

  1. der Antrag wurde nicht auf Vorlast getan, aber initiiert durch Winkel
  2. die Drop-Down-Informationen verweist auf seine eigene ID (ein bisschen projektspezifische)

  3. nur die f-Routing mit Nachladen rste Richtlinie Drop-Down-Richtlinien nachfolgende funktioniert nicht arbeiten tun

dies die Richtlinie ist

app.directive('dropdown', function($http){ 
    return{ 
     restrict:'E', 
     templateUrl:'/templates/dropdown.html', 
     scope:{ 
      selectedid:'=', 
      objectdefinition:'=' 
     }, 
     link:function(scope){ 
      scope.visible = false; 

      $http.get("/api/" + scope.objectdefinition.key) 
      .then(function(res) { 
       scope.data = res.data 
      },function(){ 

      }); 

      scope.$watch('selectedid',function(newVal){ 
       if(newVal != null){ 
        console.log('made') 
        $http.get("/api/" + scope.objectdefinition.key + '/' + scope.selectedid) 
        .then(function(res) { 
         console.log('received') 
         scope.selectedObject = res.data; 
        },function(){ 

        }); 
       } 
      }) 

      scope.select = function(item){ 
       scope.visible = false; 
       scope.selectedObject = item 
       scope.selectedid = item._id 
      } 

     } 
    } 
}); 

und das ist es in der Ansicht

.col-md-8.col-md-offset-2 
    form 
     .form-group 
      button.btn.btn-success(ng-click='save()') Save 
      a.btn.btn-danger(href='/{{object}}') Cancel 
     .form-group(ng-repeat='attribute in current.attributes' ng-switch="attribute.type") 
      label {{attribute.name}} 
      div(ng-if='!attribute.array')    
       input.form-control(ng-switch-when='text' placeholder='{{attribute.name}}' ng-model='$parent.$parent.$parent.data[attribute.name]') 
       datetimepicker(ng-switch-when='date' placeholder='{{attribute.name}}' model='$parent.$parent.$parent.data[attribute.name]') 
      ---->dropdown(ng-switch-when='object' selectedid='$parent.$parent.$parent.data[attribute.name]' objectdefinition='definition[attribute.objectType]') 
       button.btn.btn-default(ng-switch-when='boolean' ng-model='$parent.$parent.$parent.data[attribute.name]' bs-checkbox) 

       input.form-control(ng-switch-default placeholder='{{attribute.name}}' ng-model='$parent.$parent.$parent.data[attribute.name]') 
      div.well(ng-if='attribute.array') 
       .panel.panel-default(style='display:inline-block; margin-right: 10px' ng-repeat='entry in $parent.$parent.data[attribute.name] track by $index') 
        .panel-body 
         input(ng-model='entry').form-control 

und hier ist ein Bild von der aufgerufen wird problem initial load alles funktioniert gut notive 2 anfragen wurden jeweils für 1 dropdown gemacht initial load

irgendwie nicht funktioniert, weil nur 1 http Aufruf navigated away and back

kehrte ich erkennen, dass dies eine sehr spezifische Frage ist, und es ist ein bisschen mehr für das Projekt als nur diese Zeilen Code, aber ich hatte wirklich gehofft, dass jemand vor sonst hat sich gegen dieses seltsame Verhalten von $ http ging (weil ich das Problem denken muss etwas mit, dass)

Antwort

0

etwas nicht in Ordnung zu sein, mit Winkel des http-Service

aber dies scheint zu funktionieren scheint, aber i dont weiß, warum eckigs Version nicht funktioniert

$.get("/api/" + scope.objectdefinition.key + '/' + scope.selectedid,function(res) { 
         scope.selectedObject = res; 
         scope.$apply(); 
        }); 
Verwandte Themen