2016-08-14 1 views
0

Я работаю над проектом с использованием угловых. в этом проекте я создал директиву выпадающего списка. эта директива делает запрос GET для заполнения в раскрывающемся менюугловой http не работает в особых условиях

теперь некоторые страницы имеют несколько выпадающих и под несколько весьма специфическими обстоятельствами запрос HTTP Виля не реагировать на ответ от сервера (Altough он говорит, что послали его)

  1. запрос не был сделан на начальной загрузке, но инициирован перегрузочным его с помощью углового маршрутизации
  2. раскрывающейся информация ссылается на свой собственном идентификатор (немного конкретный проект)

  3. только п рвые директива не работает последующие директивы выпадающие сделать работу

это директива

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 
      } 

     } 
    } 
}); 

и это его называют по мнению

.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 

и здесь картина проблема начальная нагрузка все работает прекрасное уведомление 2 запроса были сделаны каждый для 1 выпадающего списка initial load

как-то не работает, потому что только один HTTP вызов возвращается navigated away and back

Я понимаю, что это очень конкретный вопрос, и есть немного больше к проекту, чем только эти строки кода, но я действительно надеюсь, что кто-то еще до того шел против этого странного поведения $ HTTP (потому что я думаю, что проблема имеет что-то с этим)

ответ

0

там, кажется, что-то не так с сервисом HTTP ANGULAR в

однако это, кажется, работает, но я не знать, почему версия углового не работает

$.get("/api/" + scope.objectdefinition.key + '/' + scope.selectedid,function(res) { 
         scope.selectedObject = res; 
         scope.$apply(); 
        }); 
Смежные вопросы