Php 仅当存在JSON数据时创建页面元素

Php 仅当存在JSON数据时创建页面元素,php,jquery,mysql,json,angularjs,Php,Jquery,Mysql,Json,Angularjs,当我从服务器接收JSON数据时,我会根据从JSON获得的数据定制页面。问题是,如果页面是高度定制的,那么对于需要在HTML中创建的每个元素,我都需要一个if语句 问题是,除了检查AngularJS中的每个变量,还有其他方法吗?JSON数据示例: { user_logged_in: 'yes', user_custom_background: 'no', user_likes_page: 'yes' } 在AngularJS中,我需要一个if语句来检查每个JSON变量

当我从服务器接收JSON数据时,我会根据从JSON获得的数据定制页面。问题是,如果页面是高度定制的,那么对于需要在HTML中创建的每个元素,我都需要一个if语句

问题是,除了检查AngularJS中的每个变量,还有其他方法吗?JSON数据示例:

{
    user_logged_in: 'yes', 
    user_custom_background: 'no', 
    user_likes_page: 'yes'
}
在AngularJS中,我需要一个if语句来检查每个JSON变量,以决定是否应该在页面上显示某些内容,因此ifs的数量可以是指数级的

编辑 所谓指数,我的意思是页面有许多元素需要根据数据库中的用户数据来创建,这些元素以JSON的形式检索,每个元素都需要自己的if语句

呈现逻辑是,伪代码:

if user_logged_in: 'yes' then show black `div`
if user_custom_background: 'yes' then change background color 
if user_likes_page: 'yes' then display message

对于一个复杂的web应用程序,IFs的数量将是巨大的。

鉴于您使用的是AngularJS,您应该能够将服务器上的JSON数据分配给控制器内的范围变量,如下所示:

$http({
    method: 'GET',
    url: '/server/data',
}).success(function(response) {
    $scope.serverResponse = response;
});
出于测试目的,我将跳过异步调用,只使用问题中的对象设置serverResponse注意,我遵循@Doctus的建议使用布尔值:

其余的将涉及HTML标记更改。基于您的伪代码,我假设需要进行以下更改:

<div id="black" ng-show="serverResponse.user_logged_in">Logged In</div>
<div id="background" ng-style="{'background-color': ( serverResponse.user_custom_background ? '#FF0000' : '#00FF00')}">&nbsp;</div>
<div id="message" ng-show="serverResponse.user_likes_page">Message</div>
下面是一个JSFIDLE,它显示了这一点:


希望这有帮助

你能给我们看看你的渲染逻辑吗?对我来说,这似乎不是指数型的,只是线性的。这不是一个答案,但你可以更容易地将这些值存储为布尔真/假,而不是字符串。然后你可以做如果用户登录等@Doctus是的我提供了什么只是某种伪代码。谢谢你的回复。尽管这确实简化了ng if的使用,但我确信在内部运行相同数量的if语句来检查是否设置变量,这是我希望避免的,因为使用了这么多条件。我想除了检查每个变量之外,没有其他方法可以做到这一点。@user3704920如果这些变量在逻辑上是相关的,您可能会将它们作为输入链接到状态机,并且状态机会设置元素的属性。假设您将一个位标志与每个属性关联并对它们进行异或运算,您将得到一个映射到某个状态的数字。用户\登录\ 1、用户\自定义\后台2和用户\喜欢\第4页设置为true false true将生成一个5,您的代码称为show black div and display message。只有在不计算jQuery选择器内部的情况下,这里才会出现在switch语句中。
<div id="black" ng-show="serverResponse.user_logged_in">Logged In</div>
<div id="background" ng-style="{'background-color': ( serverResponse.user_custom_background ? '#FF0000' : '#00FF00')}">&nbsp;</div>
<div id="message" ng-show="serverResponse.user_likes_page">Message</div>