首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >指令未被jQuery插件正确定位

指令未被jQuery插件正确定位
EN

Stack Overflow用户
提问于 2013-11-06 23:05:30
回答 2查看 73关注 0票数 0

我一直在玩这个精巧的jQuery数据选择器,我想把它包装成一个指令,我可以在我的角度应用程序中使用它。该指令的代码现在非常简单:

代码语言:javascript
复制
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>数组属性)。这就是为什么我要为选择器获取弹出,但是所选的值没有被设置为输入的值吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-11-06 23:30:49

element是标记中的原始元素。默认情况下,它不被替换,模板用于innerHtml。

您可以在指令或element.find('input').pickadate()中使用element.find('input').pickadate()选项。

这两种方法中的任何一种都应解决查看日期的视觉问题。但是,在使用ng-model并从外部代码(如jQuery插件)中更改值时,需要使用插件select (或在pluginAPI中称为插件)回调来触发scope.$apply(),这一点很重要。这个信息的角度变化是从代码外部到角度和更新内部。

票数 1
EN

Stack Overflow用户

发布于 2013-11-06 23:29:21

我认为您应该将replace: true添加到您的指令定义中--角是针对<date-picker>指令元素而不是输入。

相反,您也可以尝试如下:element.children().first().pickadate();

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19824728

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档