угловой http не работает в очень специфических условиях

0

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

теперь на некоторых страницах есть несколько выпадающих списков и в нескольких особых обстоятельствах http-запрос не отвечает на ответ с сервера (хотя он говорит, что он его отправил)

  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 выпадающей начальной загрузки

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

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

Теги:
http
angularjs-directive

1 ответ

0

похоже, что-то не так с угловым сервисом http

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

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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню