2016-03-09 5 views
1

Я разрабатываю гибридное приложение с использованием кордовы.Изображение base64 в svg не отображается в первый раз

По какой-то причине мне нужно сохранить изображение SVG в witch, есть изображение base64 и некоторый текст в моем SQLite. Я сохранил текст источника SVG в формате, как это:

<svg xmlns="http://www.w3.org/2000/svg" width="400" height="300" style="margin-top:5px;text-align:center" class="ng-scope"> 
    <foreignObject width="100%" height="100%"><div xmlns="http://www.w3.org/1999/xhtml" style="width: 390px;height: 290px;background-color: #2B6E44;padding: 4px"> 
    <table style="width:100%;height:100%;border-collapse:collapse;border:2px solid white;color:white;font-size:1em"> 
     <tbody> 
     <tr> 
      <td colspan="2"> 
      <div class="forImg" style="height:100%;width:50%;float:right"> 
       <img ng-src="data:image/jpeg;base64,/9j/4AAQSkZJRgABAgAAZABkAAD/7AARRHVja3kAAQAEAAAAZAAA/+4ADkFkb2JlAGTAAAAAAf/............. 
       .......................................... 
       L0JEX//Z" style="display:block;max-width:180px;max-height:170px;width:auto;height:auto;" /> 
      </div> 
      </td> 
     </tr> 
     </tbody> 
    </table> 
    </foreignObject> 
</svg> 

но когда я получаю это значение из базы данных и установить его в качестве src из img, как это:

JS:

$scope.blackboard.svgSource = "data:image/svg+xml;utf8," + res.rows.item(i).svg_source; 

HTML:

<img ng-src="{{blackboard.svgSource}}"/> 

Таблица в SVG будет отображаться нормально, но изображение base64 не будет отображаться до тех пор, пока оно не будет отображаться один раз на других страницах (в SVG будет отображаться страница всех изображений).

Поскольку изображение в SVG может отображаться после того, как оно было показано на другой странице, данные base64 являются правильными, я думаю.

Но почему он не может быть показан в первый раз?

Любая помощь приветствуется!

ответ

0

Прошу простить этот вопрос, который сейчас я решил сам.

Кажется нецелесообразным использовать SVG, который имеет изображение base64, в атрибуте src <img>.

Я, наконец, обнаружил, что директива ng-bind-html в angularJS действительно подходит для моей ситуации, которая может создавать встроенные SVG. И таким образом изображение base64 будет отображаться в первый раз.

Если у вас есть интерес к этому вопросу, пожалуйста, посмотрите на это: AngularJS : Insert HTML into view

+0

Ее вполне можно использовать SVG, который имеет base64 изображение в нем, в атрибуте ГКЗ '' . Я не знаю, какова ваша проблема на самом деле, но это не так. –

+0

@RobertLongson Спасибо за ваш комментарий. В самом деле, в моем случае, я должен показать изображение base64 хотя бы один раз, прежде чем открыть страницу, содержащую SVG выше. Или SVG будет отображаться только без изображения base64. –

+0

создать [mcve] –

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