2015-06-23 4 views
0

У меня есть несколько строковых переменных:JavaScript: разрыв строки не работает

var products = [ 
    { 
     name: 'Product_1', 
     templateUrl: 'product_1' 
    }, 
    { 
     name: 'Product_2', 
     templateUrl: 'product_2' 
    }, 
    { 
     name: 'Product_3', 
     templateUrl: 'product_3' 
    }, 
    { 
     name: 'Product_4 \n with extras', 
     templateUrl: 'product_4' 
    } 
]; 

Как вы можете видеть в продукте 4 я добавил linebrea name: 'Product_4 \n with extras',

, когда я открываю мою HTML страницу:

<ion-list> 
    <ion-item class="item-icon-right" ng-repeat="product in products" ui-sref="app.{{product.templateUrl}}" > 
     {{product.name}} 
    </ion-item> 
</ion-list> 

Нет разрыва строки. выход:

Product_1 
Product_2 
Product_3 
Product_4 with extras 

, но это должно быть:

Product_1 
Product_2 
Product_3 
Product_4 
with extras 

Почему разве разрыв линии работает?

ng-bind-html="product.name" 

не работает как намеренный. Как я уже говорил, я хочу, чтобы результат:

Product_4 
with extras 

но с ng-bind-html="product.name" и Product_4 <br /> with extras результат:

Prodcut 4 


with extras 
+1

Это не имеет ничего общего с JavaScript. В HTML-пробеле, таком как '\ n', обычно игнорируется. –

+0

Возможный дубликат [как я могу сохранить новые строки в угловом частичном изображении] (http://stackoverflow.com/questions/15449325/how-can-i-preserve-new-lines-in-an-angular-partial) –

+0

Также замена '\ n' на'
'не будет работать прямо. Это потому, что' ng-bind = "suff" '- что' {{stuff}} 'превращается в - не привязывает HTML. Вы должны явно использовать 'ng-bind-html'. Тогда у вас будут проблемы с '$ sce'. –

ответ

0

Вы должны использовать ngBindHtml тег в AngularJS и ngSanitize для того, чтобы сделать HTML из вашей сферы ,

https://docs.angularjs.org/api/ng/directive/ngBindHtml

Вам нужно установить переменную с HTML, как этот var myVar = "Hello<br/>World!";

А затем сделать ваш взгляд с этим <p ng-bind-html="myVar"></p>

Это будет выводить визуализации HTML вместо сырого текста.

var products = [ 
    { 
     name: 'Product_1', 
     templateUrl: 'product_1' 
    }, 
    { 
     name: 'Product_2', 
     templateUrl: 'product_2' 
    }, 
    { 
     name: 'Product_3', 
     templateUrl: 'product_3' 
    }, 
    { 
     name: 'Product_4 <br/> with extras', 
     templateUrl: 'product_4' 
    } 
]; 

HTML

<ion-list> 
    <ion-item class="item-icon-right" ng-repeat="product in products" ui-sref="app.{{product.templateUrl}}" > 
     <p ng-bind-html="product.name"></p> 
    </ion-item> 
</ion-list> 

Конечно, вы можете использовать другие теги, чем p

Проблема вы рассказать нам о нескольких прерывистых линий, могут быть связаны с CSS, поскольку <br/> будет выводить именно то, что см. этот пример.

https://jsfiddle.net/8019ymgj/1/

+0

Что такое '{% raw%}'? Нет такой вещи в AngularJS. –

+0

№. Результатом является: '{% raw%} Product_4
с дополнительными функциями {% endraw%}' – Mulgard

+0

Извините, я испортил два разных вопроса и ответил здесь другим, позвольте мне уточнить мой ответ. –

-2

Если вы используете JQuery, попробуйте

$("#doWhatNow").html("product 4 <br> with extras") 
+0

Не мой нисходящий, но только исправил отступ! –

+4

Никогда, никогда, делайте это с помощью jQuery в угловом (не в моем нисходящем). Изменить: вы должны использовать ''
'' –

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