我仍然是角度开发的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脚本。 (最不喜欢)
小提琴链接:https://jsfiddle.net/3gt64xz8/1/
<toggle ng-model="item.SHIP_FROM_STORE_IND" aria-label="SFS Switch" size="btn-xs"></toggle>
答案 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;
}
同样,我们可以在对服务器进行任何更改/更新期间将数据转换回来。