Bootstrap 的日期选择器 angular 指令未显示
Datepicker angular directive for Bootstrap not showing
在我的 Angular 项目中,我尝试对 bootstrap datepicker 使用 Angular 指令,但它没有出现。
我已经链接到 <script src="bower_components/angular-bootstrap/ui-bootstrap.js"></script>
并且
<script src="bower_components/angular-bootstrap/ui-bootstrap-tpls.js"></script>
在我的 index.html 和我的 app.js 我把 ui.bootstrap
作为一个依赖。
angular
.module('myApp', ['ui.bootstrap'])
有什么明显的我遗漏的吗?
我正在尝试在 ng-repeat 中的 ng-switch 中使用 uib-datepicker-popup
,但我不明白为什么这会导致任何问题:
<div class="form-group" ng-repeat="field in vm.fields">
<label for="{{ field.propertyName }}">
<h5><span translate="{{ field.translate }}"></span>
<span class="form-control-required" ng-show="{{field.required}}">*</span>
</h5>
</label>
<div ng-switch="field.type" ng-class="{ 'input-group': field.type === 'date' }">
<select ng-switch-when="gender"
name="{{ field.propertyName }}" id="{{ field.propertyName }}"
ng-model="vm.model[field.propertyName]" class="form-control"
ng-required="{{ field.required }}">
<option value="m">Male</option>
<option value="f">Female</option>
</select>
<textarea ng-switch-when="textarea"
name="{{ field.propertyName }}" id="{{ field.propertyName }}"
class="form-control" ng-model="vm.model[field.propertyName]"
ng-required="{{ field.required }}"></textarea>
<input ng-switch-when="date"
type="date" uib-datepicker-popup="dd/MM/yyyy"
show-weeks="false" is-open="vm.datePickerOpen"
name="{{ field.propertyName }}" id="{{ field.propertyName }}"
class="form-control pull-left" ng-model="vm.model[field.propertyName]"
ng-required="{{ field.required }}">
<span class="input-group-btn btn-" ng-if="field.type === 'date'">
<button type="button" class="btn btn-primary"
ng-click="vm.openDatePicker($event)">
<i class="glyphicon glyphicon-calendar"></i>
</button>
</span>
<input ng-switch-default=""
type="{{ field.type }}" name="{{ field.propertyName }}" id="{{ field.propertyName }}"
class="form-control pull-left" ng-model="vm.model[field.propertyName]"
ng-required="{{ field.required }}">
</div>
</div>
在我的控制器中:
vm.datePickerOpen = false;
vm.openDatePicker = function($event) {
vm.datePickerOpen = true;
};
显然 https://angular-ui.github.io/bootstrap/#/datepicker 上的文档适用于较新的版本。通过将 uib-datepicker-popup
更改为 datepicker-popup
它起作用了。
此外,我不得不将 <input type="date" datepicker-popup>
更改为 <input type="text" datepicker-popup>
,因为:Is there any way to change input type="date" format?
它正在工作。关于 bootstrap 的 Angular 指令的文档应该提到从哪个版本开始使用 uib-datepicker 以及 datepicker 适用的地方。
对于那些搜索,我遇到了同样的问题,这解决了我的问题。添加 AngularMoment to my module 并注入 "moment":
$scope.object.moment = moment();
$scope.object.date = $scope.object.moment.toDate();
然后:
<datepicker ng-model="object.date"></datepicker>
有类似的问题。
经过 2 小时的挖掘和尝试,我能够使用
<input type=text" uib-datepicker-popup="dd/MM/yyyy" ng-model="user.birthday" />
仅通过将模型数据设为控制器中的 Date 对象
像这样
//after we fetch the model (user) data make the needed field a Date object
user.birthday = new Date(user.birthday);
在我的 Angular 项目中,我尝试对 bootstrap datepicker 使用 Angular 指令,但它没有出现。
我已经链接到 <script src="bower_components/angular-bootstrap/ui-bootstrap.js"></script>
并且
<script src="bower_components/angular-bootstrap/ui-bootstrap-tpls.js"></script>
在我的 index.html 和我的 app.js 我把 ui.bootstrap
作为一个依赖。
angular
.module('myApp', ['ui.bootstrap'])
有什么明显的我遗漏的吗?
我正在尝试在 ng-repeat 中的 ng-switch 中使用 uib-datepicker-popup
,但我不明白为什么这会导致任何问题:
<div class="form-group" ng-repeat="field in vm.fields">
<label for="{{ field.propertyName }}">
<h5><span translate="{{ field.translate }}"></span>
<span class="form-control-required" ng-show="{{field.required}}">*</span>
</h5>
</label>
<div ng-switch="field.type" ng-class="{ 'input-group': field.type === 'date' }">
<select ng-switch-when="gender"
name="{{ field.propertyName }}" id="{{ field.propertyName }}"
ng-model="vm.model[field.propertyName]" class="form-control"
ng-required="{{ field.required }}">
<option value="m">Male</option>
<option value="f">Female</option>
</select>
<textarea ng-switch-when="textarea"
name="{{ field.propertyName }}" id="{{ field.propertyName }}"
class="form-control" ng-model="vm.model[field.propertyName]"
ng-required="{{ field.required }}"></textarea>
<input ng-switch-when="date"
type="date" uib-datepicker-popup="dd/MM/yyyy"
show-weeks="false" is-open="vm.datePickerOpen"
name="{{ field.propertyName }}" id="{{ field.propertyName }}"
class="form-control pull-left" ng-model="vm.model[field.propertyName]"
ng-required="{{ field.required }}">
<span class="input-group-btn btn-" ng-if="field.type === 'date'">
<button type="button" class="btn btn-primary"
ng-click="vm.openDatePicker($event)">
<i class="glyphicon glyphicon-calendar"></i>
</button>
</span>
<input ng-switch-default=""
type="{{ field.type }}" name="{{ field.propertyName }}" id="{{ field.propertyName }}"
class="form-control pull-left" ng-model="vm.model[field.propertyName]"
ng-required="{{ field.required }}">
</div>
</div>
在我的控制器中:
vm.datePickerOpen = false;
vm.openDatePicker = function($event) {
vm.datePickerOpen = true;
};
显然 https://angular-ui.github.io/bootstrap/#/datepicker 上的文档适用于较新的版本。通过将 uib-datepicker-popup
更改为 datepicker-popup
它起作用了。
此外,我不得不将 <input type="date" datepicker-popup>
更改为 <input type="text" datepicker-popup>
,因为:Is there any way to change input type="date" format?
它正在工作。关于 bootstrap 的 Angular 指令的文档应该提到从哪个版本开始使用 uib-datepicker 以及 datepicker 适用的地方。
对于那些搜索,我遇到了同样的问题,这解决了我的问题。添加 AngularMoment to my module 并注入 "moment":
$scope.object.moment = moment();
$scope.object.date = $scope.object.moment.toDate();
然后:
<datepicker ng-model="object.date"></datepicker>
有类似的问题。 经过 2 小时的挖掘和尝试,我能够使用
<input type=text" uib-datepicker-popup="dd/MM/yyyy" ng-model="user.birthday" />
仅通过将模型数据设为控制器中的 Date 对象
像这样
//after we fetch the model (user) data make the needed field a Date object
user.birthday = new Date(user.birthday);