2015-06-13 29 views
0

我试图得到一个日期,它是显示在引导UI日期选择纯文本的输入。因此,我使用跨度。 现在我想获得跨度的文本,但它不起作用。其实,我得到undefined。你有给我一些提示吗?获取从日期选择日期编程为文本

HTML

<input type="text" class="form-control" datepicker-popup="{{format}}" ng-model="dt" is-open="opened" min-date="minDate" max-date="'2020-06-22'" datepicker-options="dateOptions" date-disabled="disabled(date, mode)" ng-required="true" close-text="Close" />     
<span ng-model="textDate">{{dt | date:'dd.MM.yyyy' }}</span> 

JS

$scope.$watch('dt', function() {   
    var tD = $scope.textDate.value; 
    console.log(tD); 
}); 

回答

2

进样$滤入控制器/服务,并提取日期,像这样

$scope.getDate = function() { 
return $filter('date')($scope.dt, 'dd.MM.yyyy'); 
} 

Plunkr here

侧面说明一个字符串:假设dt已经有双向绑定,我不认为有必要对$watch进行更改。相反,您可以直接在需要字符串值的地方使用$filter('date')($scope.dt, 'dd.MM.yyyy')

+0

是啊,那就是石头!谢谢WeNeigh – mm1975

+0

很高兴帮助:) – WeNeigh

0

,因为它是只读角的ngModel不会在跨度工作。您需要某种输入来与ng模型进行双向绑定。为此,您可以使用绑定到输入字段上使用的模型的getter/setter。这里有一个例子:

<input type="text" name="userName" 
      ng-model="vm.dt" 
      ng-model-options="{ getterSetter: true }" /> 
<span ng-bind="vm.dt()"></span> 

通过添加ng-model-options="{ getterSetter: true }"将模型暴露于一个getter/setter方法是,你可以在你的跨度简单地调用一个函数。另外我会建议使用controllerAs语法来避免范围问题。注意vm对于inputspan控制器周围的别名。

欲了解更多信息,请检查ngModel的文档。

+0

不幸的是,它不工作:它得到一个'TypeError:无法读取属性'0'null' – mm1975

+0

你使用什么版本的Angular? – LordTribual

+0

角度版本1.3.13 – mm1975

相关问题