2013-07-25 3 views
5

Я использую этот элемент управления: http://blueimp.github.io/jQuery-File-Upload/angularjs.html, чтобы выполнить загрузку файла в угловом режиме, как только файл будет загружен на мой сервер. Я возвращаю URL-адрес и хочу отобразить его клиенту на успешный обратный вызов. Используемый плагин представляет собой обычную загрузку файла jquery, но есть угловая директивная оболочка, которую я использую.

Вот как я определяю обратный вызов:

$scope.options = { 
    url: '/api/Client/', 
    type: 'PUT', 
    done: function (event, data) { 
     var scope = angular.element(this).scope(); 
     scope.test = "doesn't work"; 
     scope.$apply(function() { 
      scope.test = "this doesn't work either"; 
     }); 
    } 
}; 

файл загружает штраф, и сделал функция вызывается, однако я не могу обновить представление. Сначала я попробовал просто изменить область, затем понял, что мне потребуется функция $ apply(), но это тоже не работает.

Я также попытался

$scope.options = { 
    url: '/api/Client/', 
    type: 'PUT', 
    done: function (event, data) { 
     $scope.test = "doesn't work"; 
     $scope.$apply(function() { 
      $scope.test = "this doesn't work either"; 
     }); 
    } 
}; 

и что также не работает. Я не уверен, почему он не обновляет мое представление, и поскольку выполненный вызов - это просто событие успеха ajax, я не вижу, как этот конкретный плагин может вызывать любые проблемы с $ scope. $ Apply. Я использую AngularJs 1.1.5, но я также пробовал 1.0.7 и получаю ту же проблему.

+0

Когда вы вызываете заявку, вы получаете сообщение об ошибке, что apply/digest уже находится в progess? –

+0

Нет, никаких ошибок. Он просто ничего не делает. Если я назову его несколько раз и посмотрю на значение $ scope.test, я вижу значение, которое было установлено ранее. Вид просто не обновляется с этим значением –

+0

Вторая версия действительно выглядит так, как будто она должна работать для меня, если вызываемая функция вызвана. –

ответ

11

Скопировано из моего комментария, чтобы сделать его более ясным, что проблема была:

мне удалось выяснить проблему. При использовании их примера у меня был дубликат ng-контроллера (их пример был вложен в мой другой контроллер), и хотя оба они использовали один и тот же контроллер, похоже, что он обновит только что-либо, что было в пределах вложенного контроллера. При удалении дублирующего атрибута ng-controller все работает нормально.

+0

Был тот же самый вопрос. Интересно, что привязки в корневом элементе (первое вхождение тега ng-controller) не обновлялись. – Joon

+0

Ты лучший! У меня возникла такая же проблема, и удаление дубликатов контроллеров отсортировало все. – devTimmy

1

Я думал, что тоже буду перезвон, так как целый день занимаюсь этой проблемой.

Убедитесь, что в вашем HTML вы применяете ng-контроллер к обертке div, а не к элементу ul.

Смежные вопросы