如何捕捉 bootstrap datepicker change 事件?
How to catch the bootstrap datepicker change event?
现在我正在尝试在用户更改日期后做一些事情。但是好像我的 ng-change
被忽略了。
这是我的代码示例:
<input ng-change='changedate()'
type="text"
starting-day="2"
show-button-bar="false"
show-weeks="false"
class="form-control addTicketDateInput"
datepicker-popup="dd MMM"
ng-model="startdate"
is-open="openstart"
datepicker-options="dateOptions"
ng-required="true"
close-text="Close" />
在我的控制器中:
$scope.changedate=function(){
console.log($scope.startdate);
}
有什么想法吗?
我之前这样做的方法是将日期选择器 jQuery 内容包装在 angular 指令中。这很粗糙,但想法是这样的:
app.directive('dateDirective', function() {
return {
restrict: 'A',
scope: {
onChange: '&'
},
link: function(scope, element, attrs) {
element.datetimepicker({
format: "MM-yyyy"
//all your options here
}).on('changeDate', function(e) {
scope.$apply(function(scope) {
scope.onChange(e.date);
});
});
}
};
});
您可以从 jQuery 元素捕获更改事件并使用它来调用控制器中的函数,或者仅使用它来设置范围值或其他任何内容:
var app = angular.module('myApp', []);
app.controller('myAppCtrl', function($scope) {
$scope.current = '';
$scope.changedate = function(date){
$scope.current = date;
};
});
然后您只需要将指令添加到您的 dom 元素:
<input date-directive
type="text"
starting-day="2"
show-button-bar="false"
show-weeks="false"
class="form-control addTicketDateInput"
datepicker-popup="dd MMM"
ng-model="startdate"
is-open="openstart"
datepicker-options="dateOptions"
ng-required="true"
close-text="Close" />
然后告诉它调用哪个作用域函数:
<input date-directive onChange='changedate(date)'
type="text"
starting-day="2"
show-button-bar="false"
show-weeks="false"
class="form-control addTicketDateInput"
datepicker-popup="dd MMM"
ng-model="startdate"
is-open="openstart"
datepicker-options="dateOptions"
ng-required="true"
close-text="Close" />
就像我说的那样,这很粗糙,只是很快就回忆起来了。如果这没有帮助,我会挖出一个经过测试的样本。
希望对您有所帮助!
另外,这里有一个 datepicker 指令可能是 halpful:
您可以关注 $scope
何时更改。
像这样:
$scope.startdate;
$scope.$watch("startdate", function(newValue, oldValue) {
console.log("I've changed : ", startdate);
});
简单的解决方案:尝试传递值:
HTML
ng-change="selectDate(dt)"
JavaScript
$scope.selectDate = function(dt) {
console.log(dt);
}
Angular
中的简单解决方案
(bsValueChange)="Function($event)"
现在我正在尝试在用户更改日期后做一些事情。但是好像我的 ng-change
被忽略了。
这是我的代码示例:
<input ng-change='changedate()'
type="text"
starting-day="2"
show-button-bar="false"
show-weeks="false"
class="form-control addTicketDateInput"
datepicker-popup="dd MMM"
ng-model="startdate"
is-open="openstart"
datepicker-options="dateOptions"
ng-required="true"
close-text="Close" />
在我的控制器中:
$scope.changedate=function(){
console.log($scope.startdate);
}
有什么想法吗?
我之前这样做的方法是将日期选择器 jQuery 内容包装在 angular 指令中。这很粗糙,但想法是这样的:
app.directive('dateDirective', function() {
return {
restrict: 'A',
scope: {
onChange: '&'
},
link: function(scope, element, attrs) {
element.datetimepicker({
format: "MM-yyyy"
//all your options here
}).on('changeDate', function(e) {
scope.$apply(function(scope) {
scope.onChange(e.date);
});
});
}
};
});
您可以从 jQuery 元素捕获更改事件并使用它来调用控制器中的函数,或者仅使用它来设置范围值或其他任何内容:
var app = angular.module('myApp', []);
app.controller('myAppCtrl', function($scope) {
$scope.current = '';
$scope.changedate = function(date){
$scope.current = date;
};
});
然后您只需要将指令添加到您的 dom 元素:
<input date-directive
type="text"
starting-day="2"
show-button-bar="false"
show-weeks="false"
class="form-control addTicketDateInput"
datepicker-popup="dd MMM"
ng-model="startdate"
is-open="openstart"
datepicker-options="dateOptions"
ng-required="true"
close-text="Close" />
然后告诉它调用哪个作用域函数:
<input date-directive onChange='changedate(date)'
type="text"
starting-day="2"
show-button-bar="false"
show-weeks="false"
class="form-control addTicketDateInput"
datepicker-popup="dd MMM"
ng-model="startdate"
is-open="openstart"
datepicker-options="dateOptions"
ng-required="true"
close-text="Close" />
就像我说的那样,这很粗糙,只是很快就回忆起来了。如果这没有帮助,我会挖出一个经过测试的样本。
希望对您有所帮助!
另外,这里有一个 datepicker 指令可能是 halpful:
您可以关注 $scope
何时更改。
像这样:
$scope.startdate;
$scope.$watch("startdate", function(newValue, oldValue) {
console.log("I've changed : ", startdate);
});
简单的解决方案:尝试传递值:
HTML
ng-change="selectDate(dt)"
JavaScript
$scope.selectDate = function(dt) {
console.log(dt);
}
Angular
中的简单解决方案(bsValueChange)="Function($event)"