AngularJS将ng-model设置为Null并且仍然具有$ valid表单

时间:2016-03-03 21:57:48

标签: html angularjs

我在角度

的复选框中使用可以为空的日期时间

在我的模特中

public Nullable<System.DateTime> MemberUnreachableDateTimeStamp { get; set; }

在我名为name =&#34; memberInfoForm&#34;

的html表单中
<input type="checkbox"
       ng-model="memberInformation.Details.MemberUnreachableDateTimeStamp"
       ng-checked="memberInformation.Details.MemberUnreachableDateTimeStamp != null"
       ng-true-value="{{getDatetime()}}"
       ng-false-value="{{null}}">

我有一个按钮,当我单击复选框将其设置为当前日期时间时,该按钮被禁用,然后再次单击它以将其设置为null,表单变为无效。我尝试设置ng-false-value =&#34; {{&#34; null&#34;}}&#34; (没有成功)任何其他建议将不胜感激!谢谢!

下面是我的按钮,它会检查表单的有效性,如果这样可以提供更多信息。

<button type="button" class="btn btn-primary btn-sm" ng-disabled="!memberInfoForm.$valid" ng-click="memberInfoForm.$valid && SaveUserInformation()">Save Personal Information</button>

1 个答案:

答案 0 :(得分:0)

好吧,所以我玩了一段时间,并提出了以下解决方案。

在我的Controller中,我创建了一个名为UpdateMemberUnreachableDateTimeStamp的函数和一个新的作用域变量memberUnreachable

$scope.memberUnreachable;
$scope.UpdateMemberUnreachableDateTimeStamp = function (checked) {
    if (checked)
    {
        $scope.memberInformation.Details.MemberUnreachableDateTimeStamp = new Date();
        $scope.memberUnreachable = true;
    }
    else {
        $scope.memberInformation.Details.MemberUnreachableDateTimeStamp = null;
        $scope.memberUnreachable = false;
    }
};

在我的HTML中

<input type="checkbox"
       ng-model="memberUnreachable"
       ng-checked="memberInformation.Details.MemberUnreachableDateTimeStamp != null"
       ng-click="UpdateMemberUnreachableDateTimeStamp(memberUnreachable)" />

似乎可以将可空的datetime memberInformation.Details.MemberUnreachableDateTimeStamp设置为null,并在执行此操作时保持表单有效。可能有一个更清洁的解决方案,所以如果你想到一个,请告诉我。