javascript - 我如何强制 jQuery 为 "listen"并激活 future AngularJS ng-repeat 元素的插件?

标签 javascript jquery angularjs

有丰富的 jQuery 经验,是 AngularJS 的新手。

我有一个包含颜色列表(可变编号)的页面,其中包含附加的 jQuery 颜色选择器(由类“.colorpicker”标记)。在页面的 PHP 生成的静态版本上,效果很好;但是将它转换为 ng-repeat,jQuery 不会捕捉到 future 的事件。

有没有可以用 $.on() 捕获的事件,或者是否有一些其他偷偷摸摸的最佳实践方法可以用 AngularJS 来完成这个?我四处搜索,但我找到的每个答案都是如何设置 $.on('click') 或类似的。

<ul class="unstyled">
  <li ng-repeat="color in showcolors">
    <input type="color" class="input-mini colorpicker" ng-model="color.hex"> {{color.category}}
  </li>
</ul>

最佳答案

任何时候你想操作 DOM 或使用 jQuery 功能/插件;是时候发出指令了。您可以向 ng-repeat 添加一个指令,在将 jQuery 颜色选择器添加到 DOM 时将其绑定(bind)到输入字段。像这样的东西:

<ul class="unstyled">
  <li ng-repeat="color in showcolors">
    <input data-jq-colorpicker type="color" class="input-mini colorpicker" ng-model="color.hex"> {{color.category}}
  </li>
</ul>

然后添加指令:

yourApp.directive('jqColorpicker', function(){
    var linkFn = function(scope,element,attrs){
        // element here = $(this)
        // bind your plugin or events (click, hover etc.) here
        element.colorpicker();
        element.bind('click', function(e){
          // do something
        });
    }

    return {
        restrict:'A',
        link: linkFn
    }
});

请注意,这是未经测试的,但应该可以解决您的问题。如果您设置了 Plunker 或 JSFiddle,我会看看。

此外,请务必查看 jQuery passthrough feature of Angular UI .

关于javascript - 我如何强制 jQuery 为 "listen"并激活 future AngularJS ng-repeat 元素的插件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16117397/

相关文章:

javascript - Angular JS Ng-switch默认状态?

javascript - $.ajax 是否替代 $(document).ready(function()?

javascript - 本地存储获取后对象未更新

javascript - ES6 类 : what about instrospection?

javascript - 将属性添加到 for 循环中的最后一项

javascript - jQuery 从两个点击的 div 中获取背景颜色,然后比较它们

javascript - Alpaca 表单提交,保持在同一页面

javascript - 在 ng-repeat 中显示字符串输出

javascript - jQuery - 根据屏幕宽度将像素添加到高度

javascript - 使用 Lodash 按多个属性对对象数组进行分组