将 jquery 插件转换为指令 angular
Convert jquery plugin into directive angular
我正在尝试将 jQuery 插件转换为指令。这是图书馆:Github.
文档中有一个选项:
$(document).ready(function() {
$("#datepicker").datepicker();
$("#datepickerbtn").click(function(event) {
event.preventDefault();
$("#datepicker").focus();
})
});
我创建的指令:
app.directive('dateP', function(){
return{
restrict:'A',
require:'ngModel',
link:function(scope, element, attr, ngModel){
$(element).datepicker(scope.$eval(attr.dateP));
console.log('hey');
ngModel.$setViewValue(scope);
}
}
});
但它不起作用,如有任何帮助,我们将不胜感激。
我读过这个:https://amitgharat.wordpress.com/2013/02/03/an-approach-to-use-jquery-plugins-with-angularjs/
基本上你写的是 ng-mode
而不是 ng-model
和指令你应该定义日期选择器选项而不是 scope.$eval(attr.dateP)
这是完全错误的。在 datepicker 中,您需要以 json
格式提供他们的选项,就像这里我们提到的选项一样 { format: 'dd/mm/yyyy' })
HTML
<input date-p id="datepicker1" class="input-small" type="text" ng-model="dt">
指令
app.directive('dateP', function() {
return {
restrict: 'A',
require: 'ngModel',
link: function(scope, element, attr, ngModel) {
element.datepicker({
format: 'dd/mm/yyyy'
});
}
}
});
更新
要在单击按钮时显示 datepicker
,您需要在控制器中添加以下方法。
控制器
$scope.showDatepicker = function(){
angular.element('#datepicker1btn').datepicker('show');
};
谢谢。
我正在尝试将 jQuery 插件转换为指令。这是图书馆:Github.
文档中有一个选项:
$(document).ready(function() {
$("#datepicker").datepicker();
$("#datepickerbtn").click(function(event) {
event.preventDefault();
$("#datepicker").focus();
})
});
我创建的指令:
app.directive('dateP', function(){
return{
restrict:'A',
require:'ngModel',
link:function(scope, element, attr, ngModel){
$(element).datepicker(scope.$eval(attr.dateP));
console.log('hey');
ngModel.$setViewValue(scope);
}
}
});
但它不起作用,如有任何帮助,我们将不胜感激。
我读过这个:https://amitgharat.wordpress.com/2013/02/03/an-approach-to-use-jquery-plugins-with-angularjs/
基本上你写的是 ng-mode
而不是 ng-model
和指令你应该定义日期选择器选项而不是 scope.$eval(attr.dateP)
这是完全错误的。在 datepicker 中,您需要以 json
格式提供他们的选项,就像这里我们提到的选项一样 { format: 'dd/mm/yyyy' })
HTML
<input date-p id="datepicker1" class="input-small" type="text" ng-model="dt">
指令
app.directive('dateP', function() {
return {
restrict: 'A',
require: 'ngModel',
link: function(scope, element, attr, ngModel) {
element.datepicker({
format: 'dd/mm/yyyy'
});
}
}
});
更新
要在单击按钮时显示 datepicker
,您需要在控制器中添加以下方法。
控制器
$scope.showDatepicker = function(){
angular.element('#datepicker1btn').datepicker('show');
};
谢谢。