最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

javascript - Convert jquery plugin into directive angular - Stack Overflow

programmeradmin2浏览0评论

I'm trying to convert jQuery plugin into directive. Here is the library: Github.

In the documentation there is an option :

$(document).ready(function() {
        $("#datepicker").datepicker();
        $("#datepickerbtn").click(function(event) {
            event.preventDefault();
            $("#datepicker").focus();
        })
    });

Directive I've created :

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);
        }
    }
}); 

but it's not working , any help would be appreciate it .

Plunker .

I've read this : /

I'm trying to convert jQuery plugin into directive. Here is the library: Github.

In the documentation there is an option :

$(document).ready(function() {
        $("#datepicker").datepicker();
        $("#datepickerbtn").click(function(event) {
            event.preventDefault();
            $("#datepicker").focus();
        })
    });

Directive I've created :

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);
        }
    }
}); 

but it's not working , any help would be appreciate it .

Plunker .

I've read this : https://amitgharat.wordpress./2013/02/03/an-approach-to-use-jquery-plugins-with-angularjs/

Share Improve this question edited May 1, 2016 at 15:37 marc_s 756k184 gold badges1.4k silver badges1.5k bronze badges asked Feb 20, 2015 at 13:31 SadeghbayanSadeghbayan 1,1632 gold badges19 silver badges38 bronze badges
Add a ment  | 

1 Answer 1

Reset to default 6

Basically you written ng-mode instead of ng-model and directive you should define date-picker options not the scope.$eval(attr.dateP) which is totally wrong. Inside datepicker you need to provide their options in json format like here we mentioned option as { format: 'dd/mm/yyyy' })

HTML

<input date-p id="datepicker1" class="input-small" type="text" ng-model="dt">

Directive

app.directive('dateP', function() {
  return {
    restrict: 'A',
    require: 'ngModel',
    link: function(scope, element, attr, ngModel) {
      element.datepicker({
        format: 'dd/mm/yyyy'
      });
    }
  }
});

Update

For show datepicker on button click you need to do add below method inside your controller.

Controller

$scope.showDatepicker =  function(){
  angular.element('#datepicker1btn').datepicker('show');
};

Working Plunkr

Thanks.

发布评论

评论列表(0)

  1. 暂无评论