Я работаю над проектом с использованием углового. в этом проекте я создал директиву выпадающего списка. эта директива запрашивает запрос на заполнение выпадающего меню
теперь на некоторых страницах есть несколько выпадающих списков и в нескольких особых обстоятельствах http-запрос не отвечает на ответ с сервера (хотя он говорит, что он его отправил)
выпадающая информация ссылается на свой собственный идентификатор (конкретный проект)
только первая директива не работает в последующих директивах выпадающего списка
это директива
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
однако, похоже, это работает, но я не знаю, почему угловая версия не работает
$.get("/api/" + scope.objectdefinition.key + '/' + scope.selectedid,function(res) {
scope.selectedObject = res;
scope.$apply();
});