我正在尝试根据我网站的可用语言(英语、西班牙语、葡萄牙语)格式化 Bootstrap UI 日期选择器。
我的观点是这样的:
<div class="row">
<div class="col-md-5">
<div class="form-group">
<label class="control-label" translate="verificar.form.fechanac" for="field_fechanac">Fecha de Nacimiento</label>
<p class="input-group">
<input type="text" class="form-control" id="field_fechanac" name="field_fechanac"
uib-datepicker-popup="{{formatoFecha}}" ng-model="vm.form.fechanac" is-open="data.isOpen" datepicker-options="{showWeeks: false, startingDay: 1, startWeek: 1}" ng-required="true" readonly />
<span class="input-group-btn">
<button type="button" class="btn btn-default" ng-click="data.isOpen = true"><i class="glyphicon glyphicon-calendar"></i></button>
</span>
</p>
<div ng-show="verificarForm.fechanac.$invalid">
<p class="help-block"
ng-show="verificarForm.fechanac.$error.required"
translate="entity.validation.required">This field is
required.</p>
</div>
</div>
</div>
</div>
我的控制器:
angular.module('webclientesApp')
.controller('ValidateController', ValidateController);
ValidateController.$inject = ['$scope', 'Principal', 'ValidateService', '$state', '$window'];
function ValidateController($scope, Principal, ValidateService, $state, $window) {
$scope.dt = new Date();
var vm = this;
vm.formData = {};
vm.data = {};
vm.formatoFecha = (function formatearFecha(){
vm.lenguaje = $window.navigator.language || $window.navigator.userLanguage;
console.log (vm.lenguaje);
if (vm.lenguaje === "es"){
vm.formatoFecha= "dd/MM/yyyy";
}else if (vm.lenguaje === "pt-pt"){
vm.formatoFecha= "MM/dd/yyyy";
}
return vm.formatoFecha;
})();
所需的行为是日期表单以正确的格式显示日期。事实证明,这并不像预期的那样:
我错过了什么吗?抱歉,如果问题在某个地方得到了回答,我已经检查了很多很多关于这个问题的问题,但似乎并不完全符合我的需求。
@Martijn Welker 回复后编辑的问题
我已经(事实上,我已经)将 angular-dynamic-locale 注入到控制器中,并像这样调用 $locale:
vm.formatoFecha = (function formatearFecha(){
vm.lenguaje = $locale;
console.log (vm.lenguaje);
vm.formatoFecha = vm.lenguaje.DATETIME_FORMATS.mediumDate;
return vm.formatoFecha
})();
然后我像这样使用 uib-datepicker-popup(这应该使用“MMM d, y”格式):
<div class="row">
<div class="col-md-5">
<div class="form-group">
<label class="control-label" translate="verificar.form.fechanac" for="field_fechanac">Fecha de Nacimiento</label>
<p class="input-group">
<input type="text" class="form-control" id="field_fechanac" name="field_fechanac"
uib-datepicker-popup="{{formatoFecha}}" ng-model="vm.form.fechanac" is-open="data.isOpen" datepicker-options="{showWeeks: false, startingDay: 1, startWeek: 1}" ng-required="true" readonly />
<span class="input-group-btn">
<button type="button" class="btn btn-default" ng-click="data.isOpen = true"><i class="glyphicon glyphicon-calendar"></i></button>
</span>
</p>
<div ng-show="verificarForm.fechanac.$invalid">
<p class="help-block"
ng-show="verificarForm.fechanac.$error.required"
translate="entity.validation.required">This field is
required.</p>
</div>
</div>
</div>
</div>
但仍然没有。我不知道我是否错误地调用了控制器或其他东西。