2016-07-03 6 views
1

このコードをPHPウェブサイトで実行すると動作しますが、 'text:'の後に\ nを追加して新しい行を作成するときは、上の停止を示す。以下は、コードが何であるかのスニペットですが、PHPを実行しないのでエラーは表示されません。 nJavascript内でPHPコードを壊す

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>

答えて

2

あなたは実際には2回改行をエスケープする必要があります。 つのJavaScriptのエスケープとPHPのための1

あなたの現在の文字列は、このPHPを生成します。

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

\nが改行文字にはJavaScriptによって評価し、これは、PHPが無効になりますされているため。

あなたは代わりにこの文字列を使用する必要があります。nは\

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

はHTMLで表示されません。あなたはこのようにコーディングする必要があります。

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}}, 
]; 
} 
関連する問題