使用ng-attr

时间:2016-03-11 18:02:47

标签: angularjs angularjs-directive

我正在努力实现以下目标:

如果$ scope.loginData.use24hr为true,我想调用

<div class="timeline_text" ion-datetime-picker am-pm ng-model="datetimeValueTo.value" ng-change="dateChanged()">

如果$ scope.loginData.use24hr为false,我想调用

<div class="timeline_text" ion-datetime-picker  ng-model="datetimeValueTo.value" ng-change="dateChanged()">

换句话说,&#34; am-pm&#34;是需要有条件地消失的属性。

ion-datetime-picker3rd party directive

要做到这一点,我正在做:

<div class="timeline_text" ion-datetime-picker ng-attr-am-pm="{{!loginData.use24hr|| undefined}}"  ng-change="dateChanged()">

然而,无论use24hr的值如何,它总是放置am-pm属性。谁能告诉我这里做错了什么?感谢

根据答案进行更新

编辑包含对JC回答的回复

<ion-item>
   <div ion-datetime-picker title="From" ng-attr-am-pm="!!loginData.use24hr" ng-model="datetimeValueFrom.value">
    <b>VALUE:{{!loginData.use24hr}} From: </b>{{datetimeValueFrom.value | date: timeFormat}}
    </div>
</ion-item>

我强制布尔只是为了确保,但正如你所看到的那样无论价值如何,AM-PM指令总会出现

enter image description here enter image description here

1 个答案:

答案 0 :(得分:1)

该属性可以取值。要关闭它,请使用am-pm={{!loginData.use24hr}}

注意:看起来它需要布尔false而不仅仅是假的。除布尔false之外的任何值都将启用am-pm行为。

如果您需要将值强制为布尔值,请尝试以下操作:am-pm={{!!loginData.use24hr}}

https://github.com/katemihalikova/ion-datetime-picker/blob/master/src/picker.js#L165