2016-07-03 8 views
1

Wenn ich diesen Code auf meiner PHP-Website ausführen, funktioniert es aber beim Hinzufügen eines \ n nach 'text:' als PHP, um eine neue Zeile zu erstellen, die Einträge in der Tabelle unter dem blauen Titel an der Spitze zeigen. Unten ist ein Ausschnitt davon, was der Code ist, aber es läuft nicht PHP, so dass es den Fehler nicht zeigt. n bricht PHP-Code in Javascript

function MyCtrl($scope) { 
 
    $scope.environment_service_packages = 
 
    [ 
 
     {name: 'obj1', info: {text: '<?php echo "This: \n breaks the code"; ?>', show: true}}, 
 
     {name: 'obj2', info: {text: 'some extra info for obj2', show: false}}, 
 
    ]; 
 
}
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap.min.css" rel="stylesheet"/> 
 
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script> 
 

 
<body ng-app> 
 
    <table ng-controller="MyCtrl" class="table table-hover table-striped"> 
 
    <tr class="info"> 
 
     <td>...</td> 
 
    </tr> 
 
    <tbody ng-repeat="x in environment_service_packages"> 
 
     <tr ng-click="x.info.show = !x.info.show"> 
 
     <td> {{ x.name }} 
 
     </tr> 
 
     <tr ng-show="x.info.show"> 
 
     <td> 
 
      {{ x.info.text }} 
 
     </td> 
 
     </tr> 
 
    </tbody> 
 
    </table> 
 
</body>

Antwort

2

Sie müssen tatsächlich die doppelte Zeilenumbruch zu entkommen. Eine Flucht für JavaScript und eine für PHP

Ihre aktuellen String generiert diese php:

<?php echo "This: 
breaks the code"; ?> 

weil die \n von Javascript in ein Zeilenvorschub-Zeichen ausgewertet wird und das macht die PHP ungültig.

sollten Sie diese Zeichenfolge statt:

'<?php echo "This: \\n does not break the code"; ?>' 
2

\ n wird in HTML nicht zeigen. Du musst so codieren.

function MyCtrl($scope) { 
    $scope.environment_service_packages = 
[ 
    // &lt;br&gt; will be convert to <br> 
    {name: 'obj1', info: {text: '<?php echo "This: &lt;br&gt; breaks the code"; ?>', show: true}}, 
    {name: 'obj2', info: {text: 'some extra info for obj2', show: false}}, 
]; 
} 
Verwandte Themen