我一直在玩这个精巧的jQuery数据选择器,我想把它包装成一个指令,我可以在我的角度应用程序中使用它。该指令的代码现在非常简单:
directive('datePicker', function() {
return {
restrict: 'E',
template: '<input type="text" class="topcoat-text-input--large full" placeholder="Select Date">',
link: function (scope, element, attrs) {
element.pickadate();
}
}如您所见,我只是使用必要的pickadate() jQuery调用来锁定元素参数。输入是正确的目标,因为当我点击它时,我被提供了数据交换接口,并且可以与它交互,没有问题。但是,当我选择一个日期时,没有任何信息被填充到输入元素中。我是否遗漏了一些明显的内容,允许从控件中选择日期来设置输入的值?
我做了一些调试,在链接函数中,元素参数似乎以某种方式包装了实际的输入(似乎有一个包含childNodes标记的<input>数组属性)。这就是为什么我要为选择器获取弹出,但是所选的值没有被设置为输入的值吗?
发布于 2013-11-06 23:30:49
element是标记中的原始元素。默认情况下,它不被替换,模板用于innerHtml。
您可以在指令或element.find('input').pickadate()中使用element.find('input').pickadate()选项。
这两种方法中的任何一种都应解决查看日期的视觉问题。但是,在使用ng-model并从外部代码(如jQuery插件)中更改值时,需要使用插件select (或在pluginAPI中称为插件)回调来触发scope.$apply(),这一点很重要。这个信息的角度变化是从代码外部到角度和更新内部。
发布于 2013-11-06 23:29:21
我认为您应该将replace: true添加到您的指令定义中--角是针对<date-picker>指令元素而不是输入。
相反,您也可以尝试如下:element.children().first().pickadate();
https://stackoverflow.com/questions/19824728
复制相似问题