切换基于JSON数据的切换状态

时间:2017-07-18 13:58:03

标签: angularjs json angular-bootstrap-toggle

我仍然是角度开发的noobie,我有几个解决我的问题的解决方案,但没有意识到如何实现它们。 我在角度表达式中使用[Angular Bootstrap Toggle]切换来控制多个参数的开/关值。

切换的状态(ON / OFF)基于ng-model =" toggleValue",它要求切换值为布尔类型,即true,false。

现在我从我的数据库导入的数据(oracledb)有这个参数" toggleValue"定义为" Y"(True)或" N"(False)。如何进行切换开关投诉以支持Y / N值?

解决方案思想:
1)将传入的JSON值从Y转换为true,将N转换为false 2)将ng-model绑定到表达式,如果值为' Y'别的假 3)Hack Angular Bootstrap切换JS脚本。 (最不喜欢)

View Screenshot

小提琴链接:https://jsfiddle.net/3gt64xz8/1/

<toggle ng-model="item.SHIP_FROM_STORE_IND" aria-label="SFS Switch" size="btn-xs"></toggle>

1 个答案:

答案 0 :(得分:0)

所以我发现有几个解决方案可能适用于这个问题。同样,我不一定认为这些是最优的解决方案,因为无论我们是否必须迭代我们的数据对象并将所需的key:value对的值从'Y'转换为true而将'N'转换为false。

1)ng-init
我在分区上创建了一个父分区,我需要使用这些ng-model变量,并使用以下代码重新分配toggleValue的值,因为ng-init允许使用表达式,ng-model不是

FROM php:5.6-apache
RUN a2enmod rewrite
COPY rest.conf /etc/apache2/sites-enabled/000-default.conf

控制器中的Init函数:

<div ng-init="item.SHIP_FROM_STORE_IND = init(item.SHIP_FROM_STORE_IND);
 item.BOPIS_ENABLED_IND=init(item.BOPIS_ENABLED_IND); 
 item.BOSTS_ENABLED_IND=init(item.BOSTS_ENABLED_IND)">

优点:由于我使用的是ng-repeat和分页,因此只更改当前页面的范围元素,从而提高效率,并且在页面更改时迭代更改其他元素。
缺点:我的视图中还有一个搜索框,可让您根据toggleValue参数(true / false)过滤记录。现在,如果应用过滤器,它只过滤掉当前页面元素而不是所有元素,因为它们仍然是“Y”或“N”值。

2)在获取数据时迭代对象并交换控制器中的值

这是非常简单明了的解决方案,但显然不是最有效的解决方案。

$scope.init = function(value) {
$scope.testInput= (value=='Y')? true:false;
return $scope.testInput;
}

同样,我们可以在对服务器进行任何更改/更新期间将数据转换回来。