2014-10-14 2 views
0

Я пытаюсь получить доступ к защищенному URL-адресу изображения, я сделал эту директиву, чтобы получить защищенное изображение, которое возвращает base64 текущего изображения. Все работает нормально. моя проблема в том, что когда запрос будет выполнен. Я получаю эту ошибку в хроме «Aw, Snap!»Угловое Добавление на элемент из директивы make browser crash

<my-image src="base_url" token="token"></my-image> 



directive('myImage', ['$http' , function ($http) { 
    return { 
     restrict: 'E', 
     replace: true, 
     scope: { 
     src: '=', 
     token: '=' 
     }, 
     link: function (scope, element, attrs) { 
     $http.get(scope.src, { 
      headers: { 
       'Authorization': 'Bearer ' + scope.token 
      } 
     }) .success(function (data) { 
      scope.$watch('myImage', function() { 
       element.append('<img src="'+data+ '" />'); 
      }); 
     }).error(function (data) { 

     }); 
     } 
    } 
}]); 


app.controller("myController", ["$scope", 
    function ($scope) 
    { 
     $scope.base_url = "api.securedsite.com/image/img.png"; 
    }); 
+0

Вы понимаете, ваш SRC является "base_url" и маркер является "маркер" не так ли? И вы пытаетесь поставить часы на свою директиву? Не могу этого сделать. – Brian

+0

yup. но base_url возвращает версию образа base64. базовый url - это что-то вроде api.site.com/img/this.jpg, но он возвращает код base64 изображения. – user3487657

+0

Что значит, что он возвращает базовый url? base_url - это просто текст. Вы хотите использовать {{base_url}}? – Brian

ответ

0

Прежде всего, чтобы очистить это немного, вам не нужно назначить переменную области действия атрибутов затем передать их через изолированную сферу к вашей директиве. У вас уже будет доступ к тем же переменным. Однако ошибка заключается в попытке поставить часы на вашу директиву. Это то, что разрушает хром.

HTML:

<my-image></my-image> 

ЯШ:

directive('myImage', ['$http' , function ($http) { 
    return { 
    restrict: 'E', 
    replace: true, 
    link: function (scope, element, attrs) { 
     $http.get(scope.base_url, { 
      headers: { 
      'Authorization': 'Bearer ' + scope.token 
      } 
     }).success(function (data) { 
      element.append('<img src="'+data+ '" />'); 
     }).error(function (data) { 
     }); 
    } 
    } 
}]); 
+0

Если я использую что-то вроде этого '' запрос не работает, а значение scope.src равно '{{base_url }} ' – user3487657

+0

У вас есть ng-controller = "myController" на одном из внешних тегов html? Если это работает по-другому, тогда сделайте это, но я не понимаю, как это возможно. – Brian

+0

yup. Я думал, что {{base_url}} предназначен только для вывода? – user3487657

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