范围变量未显示

时间:2016-02-03 08:02:45

标签: javascript angularjs

我在控制器中设置了范围变量

$scope.patientState = {};
var dateTime = new Date();
$scope.today = moment(dateTime).format("YYYY-MM-DD");
$scope.patientState.stateChangeDate = new Date();

我在视图中使用这些来设置日期的默认值:

<input type="date" ng-model="patientState.stateChangeDate" max="{{today}}"/>

接下来我在视图中显示范围变量

{{patientState.stateChangeDate}}

我的问题是当我在输入标签中设置“max”参数时,我无法看到显示的范围变量,即{patientState.stateChangeDate}}没有显示任何内容。

但是如果从输入标签中删除“max”参数,我可以看到显示范围变量。

我无法弄清楚为什么?

2 个答案:

答案 0 :(得分:2)

我觉得问题是因为您格式化了$scope.today日期

以相同的格式转换它们($scope.today$scope.patientState.stateChangeDate)并检查问题是否已解决!

此处的问题是您将$scope.today格式化为'YYYY-MM-DD'格式value of today is converted for 12AM。但是,$scope.patientState.stateChangeDate current time始终大于$scope.today

答案 1 :(得分:0)

如果您将最大日期设置为今天并选择上一个日期,那么它将在$ scope变量中更新,但如果您选择功能日,则字段验证将为false,并且不会设置日期变量。

看来它在ivalidated时从作用域中删除了整个变量。

您还可以检查输入字段是否正在添加css类“ng-invalid”

将以下css添加到您的输入中,看看,每当您没有获得模板值时,该字段将无效(红色)。

input {
    transition:all linear 0.5s;
    background: transparent;
}
input.ng-invalid {
    color:white;
    background: red;
}