在PHP中回显时,Javascript函数中的新行不起作用
下面的代码使用Javascript和PHP,但当它运行时,我希望每个echo都位于单独的行上。我尝试过使用\n和在PHP中回显时,Javascript函数中的新行不起作用,javascript,php,newline,Javascript,Php,Newline,下面的代码使用Javascript和PHP,但当它运行时,我希望每个echo都位于单独的行上。我尝试过使用\n和以及其他方法,但它们都不会对文本产生任何影响。有人能帮我吗 函数MyCtrl($scope){ $scope.environment\u服务\u包= [ {name:'obj1',info:{text:'',show:true}, {name:'obj2',info:{text:'obj2的一些额外信息',show:false}, ]; } ... {{x.name} {{x.in
以及其他方法,但它们都不会对文本产生任何影响。有人能帮我吗
函数MyCtrl($scope){
$scope.environment\u服务\u包=
[
{name:'obj1',info:{text:'',show:true},
{name:'obj2',info:{text:'obj2的一些额外信息',show:false},
];
}
...
{{x.name}
{{x.info.text}
ng绑定不解释html实体,因此您必须以如下方式表示回音:
function MyCtrl($scope) {
$scope.environment_service_packages =
[
{name: 'obj1', info: {text:['<?php echo "hello" ?>','<?php echo "world"; ?>'], 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 }} </td>
</tr>
<tr ng-show="x.info.show">
<td>
<p ng-repeat="txt in x.info.text">{{ txt }}</p>
</td>
</tr>
</tbody>
</table>
</body>
函数MyCtrl($scope){
$scope.environment\u服务\u包=
[
{name:'obj1',info:{text:['',],show:true},
{name:'obj2',info:{text:'obj2的一些额外信息',show:false},
];
}
...
{{x.name}
{{txt}
您的第一个
标记未关闭
<tr ng-click="x.info.show = !x.info.show">
<td> {{ x.name }} </td>
</tr>
<tr ng-show="x.info.show">
<td>
<p ng-repeat="txt in x.info.text">{{ txt }}</p>
</td>
</tr>
{{x.name}
{{txt}
顺便说一句,在Angular代码中回显PHP是一种不好的做法。ng绑定不解释html实体,因此您必须以如下方式表示回显:
function MyCtrl($scope) {
$scope.environment_service_packages =
[
{name: 'obj1', info: {text:['<?php echo "hello" ?>','<?php echo "world"; ?>'], 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 }} </td>
</tr>
<tr ng-show="x.info.show">
<td>
<p ng-repeat="txt in x.info.text">{{ txt }}</p>
</td>
</tr>
</tbody>
</table>
</body>
函数MyCtrl($scope){
$scope.environment\u服务\u包=
[
{name:'obj1',info:{text:['',],show:true},
{name:'obj2',info:{text:'obj2的一些额外信息',show:false},
];
}
...
{{x.name}
{{txt}
您的第一个
标记未关闭
<tr ng-click="x.info.show = !x.info.show">
<td> {{ x.name }} </td>
</tr>
<tr ng-show="x.info.show">
<td>
<p ng-repeat="txt in x.info.text">{{ txt }}</p>
</td>
</tr>
{{x.name}
{{txt}
顺便说一句,在Angular代码中回显PHP是不好的做法。您只需要将表达式放在
<td>
<pre>{{ x.info.text }}</pre>
</td>
顺便说一句-您可以用空白:PRE替换PRE
标记代码>css样式
函数MyCtrl($scope){
$scope.environment\u服务\u包=
[
{name:'obj1',info:{text:'line 1\nline 2',show:true},
{name:'obj2',info:{text:'obj2的一些额外信息',show:false},
];
}
...
{{x.name}
{{x.info.text}
只需将表达式置于
<td>
<pre>{{ x.info.text }}</pre>
</td>
顺便说一句-您可以用空白:PRE替换PRE
标记代码>css样式
函数MyCtrl($scope){
$scope.environment\u服务\u包=
[
{name:'obj1',info:{text:'line 1\nline 2',show:true},
{name:'obj2',info:{text:'obj2的一些额外信息',show:false},
];
}
...
{{x.name}
{{x.info.text}
我无法运行您的代码--代码中充满了未定义的变量。请查看此页-,并给我们一个只包含您希望我们解决的问题的示例。@TopologicalSort好的,我已经更新了问题。您的
在这种情况下应该可以工作。您可以通过在html中手动编写内容来进行小的校对。为什么(效果如何)你说它们不起作用?它们是否呈现为文本?如果是这样,可能是您的框架或引擎将其转义以输出文本表单。还是CSS的东西?很难说没有一个最小的完整的例子。然而,td中的br标记确实产生了一个新行:)试试
顺便说一句-angularjs的整个想法不是将PHP注入客户端………@AlonEitan并不重要。我应该把代码放在哪里?我不能运行你的代码--它充满了未定义的变量。请查看此页-,并给我们一个只包含您希望我们解决的问题的示例。@TopologicalSort好的,我已经更新了问题。您的
在这种情况下应该可以工作。您可以通过在html中手动编写内容来进行小的校对。为什么(效果如何)你说它们不起作用?它们是否呈现为文本?如果是这样,可能是您的框架或引擎将其转义以输出文本表单。还是CSS的东西?很难说没有一个最小的完整的例子。然而,td中的br标记确实产生了一个新行:)试试
顺便说一句-angularjs的整个想法不是将PHP注入客户端………@AlonEitan并不重要。我应该把代码放在哪里?我想浏览器会知道如何处理这个问题,当它到达
用缺少的结束标记包装单元格时,自动关闭标记。那么没有理由表数据单元格内的
不断线。但是
标记在第二个单元格上,它有一个结束标记是的,但是一些高级html代码可能会破坏其余的。我已经在chrome上测试了这个表,
标记确实起作用,即使之前没有关闭。你是对的,但这是我能看到的唯一一件能阻止它工作的事情。原因是ngBind
(这相当于{{expression}
)不适用于html实体:ngBind属性告诉Angular将指定html元素的文本内容替换为OP在其控制器中使用PHP的给定表达式的值-这是我以前从未见过的。。。作为一个整体,这是一个非常糟糕的做法。我认为浏览器会知道如何处理这个问题,当它到达
时,自动关闭标记,用缺少的关闭标记将单元格包装起来
那么表内的数据单元格没有理由不断线。但是
标记在sec上