我实际上不确定如何提出这个问题,我可能会使用不正确的用语,所以请耐心等待。
Angular设置双向数据绑定,这样可以轻松处理双方的数据。但是,如果我想改变数据的表示方式怎么办?
让我举一个具体的例子。
我想要一个带有复选框的表单,如果直接绑定到模型,则会被Angular存储为true或false。但是,在网页的另一部分,我希望该值显示为0或1,而不是true或false。
现在确定我可以让他们使用两个不同的变量,并使用ng-change或类似的东西来更新一个基于另一个,但这似乎有点过分和错综复杂。
是否有一些特殊的元函数或我可以定义的东西,它可以让我基本上来回转换数据?
答案 0 :(得分:2)
使用ngTrueValue
和ngFalseValue
指令。他们在复选框中定义了应被视为true
和false
的内容:https://docs.angularjs.org/api/ng/input/input%5Bcheckbox%5D
示例:
<input type="checkbox" ng-model="foo"
ng-true-value="OK"
ng-false-value="BOO-HOO">
在上面的示例中,模型的值为"OK"
或"BOO-HOO"
,而不是默认的true
和false
。
或者,如果您希望原始模型保留其默认值并仅从另一个变量中绘制自定义值,您还可以使用ngChange
指令:
<input type="checkbox" ng-model="foo"
ng-change="bar=foo&&'OK'||'BOO-HOO'">
现在,每当foo
发生变化时,bar
都会有相应的替代值。只需记住为bar
分配一个初始值(它将从没有任何值开始)。
答案 1 :(得分:0)
在您的控制器中......
$scope.getvalue(data)
{
if(data===true)
return 1; // write what ever you want...
return 0;
}
在你的HTML页面中
将正常的{{$scope.data1}}
绑定为{{getvalue($scope.data1)}}
答案 2 :(得分:0)
ngBind
:检查此弹射器:http://plnkr.co/edit/cRhLN2p5N4PmI65ps6Gp?p=preview
<input type="checkbox" ng-model="ok"> OK?
<h2>true or false: {{ ok }}</h2>
<h2>0 or 1: {{ ok ? 1 : 0 }}</h2>