我做了很多搜索和潜伏,但未能纠正我的问题.
我正在弄清楚AngularJS的一些基础知识并且它非常好,但我很难理解指令的工作方式以及如何从自定义控件访问数据.
长话短说我试图使用angularjs为bootstrap工作制作一个自定义控件,这样我就可以在表单中正确使用它.
这是控件:http://tarruda.github.com/bootstrap-datetimepicker/
我有一些其他的控件,我想要工作,但我想如果我可以得到这一个我可以很容易得到其他人.
以下是我在此时所拥有的基本框架的链接:http://jsfiddle.net/uwC9k/6/
首先,我试图在模板工作后如何初始化控件(其中,我认为此时我做的很多)
link: function(scope,element,attr) { attr.$observe('dpid',function(value) { if(value) { $('#' + scope.dpid).datetimepicker({ language: 'en',pick12HourFormat: true }); }
当我把它放在link指令中时,它什么也没做.我甚至没有看到任何错误. scope.dpid确实显示了控件的ID,所以我认为它会起作用.但是唉,我对javascript的了解,告诉我,我不在范围之内,或者是一些无法访问元素的废话.
一旦我开始这样做,我不确定如何以表格形式访问这些数据.
任何帮助是极大的赞赏.
更新
得到基本位,现在我需要知道如何将新控件中的数据导入我的控制器.这是更新的新jsfiddle的链接.
http://jsfiddle.net/tmZDY/1/
更新2
我想我对如何使这些数据可访问有了一个想法,但是我对javascript的了解不足让我再次干涸.
当我创建对象时,我就这样做了.
var elDatepicker = element.datetimepicker({ language : 'en',pick12HourFormat : true,});
但是,当我尝试使用这个对象时,似乎没有得到正确的对象,或者我只是缺少一些基本知识.无论哪种方式,这肯定让我感到愚蠢.
console.log(elDatepicker.getDate());
解决方法
<datepicker model="mydate"></datepicker> mydate = {{mydate}}
我还建议替换:true:
.directive('datepicker',function ($parse) { return { restrict: 'E',replace: true,template: '<div class=\"well\"><div class=\"input-append\">' + '<input data-format=\"MM/dd/yyyy HH:mm:ss PP\" type=\"text\"></input>' + '<span class=\"add-on\"><i data-time-icon=\"icon-time\" data-date-icon=\"icon-calendar\"></i></span>' + '</div></div>',link: function (scope,attr) { var picker = element.find('div').datetimepicker({ language: 'en',pick12HourFormat: true }); var model = $parse(attrs.model); picker.on('changeDate',function(e) { console.log(e.date.toString()); console.log(e.localDate.toString()); model.assign(scope,e.date.toString()); scope.$apply(); }); } }; })
$parse有点棘手.我展示的是它的主要用例:我们解析一个属性并获取一个函数,该函数上有一个assign()方法,允许我们更改scope属性.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。