Javascript 将jquery插件转换为指令

Javascript 将jquery插件转换为指令,javascript,jquery,angularjs,angularjs-directive,datepicker,Javascript,Jquery,Angularjs,Angularjs Directive,Datepicker,我正在尝试将jQuery插件转换为指令。这是图书馆: 在文档中有一个选项: $(document).ready(function() { $("#datepicker").datepicker(); $("#datepickerbtn").click(function(event) { event.preventDefault(); $("#datepicker").focus(); }) }

我正在尝试将jQuery插件转换为指令。这是图书馆:

在文档中有一个选项:

$(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);
        }
    }
}); 
但它不起作用,任何帮助都将不胜感激


我读过:

基本上你写的是
ng模式
,而不是
ng模式
和指令,你应该定义日期选择器选项,而不是
范围。$eval(attr.dateP)
,这是完全错误的。在内部,您需要以
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'
      });
    }
  }
});
对于按钮上的show
datepicker
,单击您需要在控制器中添加以下方法

控制器

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


谢谢。

@sani检查了一下,扑通一声,回答了一个问题,我能再问你一件事吗?你怎么知道我们应该加上这个;link:function(scope,element,attr,ngModel){element.datepicker({format:'dd/mm/yyyy'});或者angular.element('#datepicker1btn').datepicker('show');因为它的
datepicker
选项是类似于
{format:'dd/mm/yyyyy'}的json提供的选项
看看这个,只有它会绑定到那个元素。哦,这是真的,感谢一个百万好友,救了我一天