【问题标题】:Using jQuery plugin as Angular Directive使用 jQuery 插件作为 Angular 指令
【发布时间】:2017-01-25 09:54:26
【问题描述】:

我正在尝试使用可以将文本 (Arctext.js) 弯曲为 Angular 指令的 jQuery 插件。

指令似乎工作正常,给定的文本按预期弯曲,除了我希望这个文本是一个 Angular 变量。 问题是 jQuery 插件似乎在 Angular 解析变量值之前执行。

我的 html 元素:

<h2 class="circle">{{ myController.myVar }}</h2>

我的指令:

return {
    restrict: "C",
    link: function(scope, element, attrs) {
        element.arctext({radius: 500})
    }
}

页面将“{{ myController.myVar }}”显示为弯曲文本。

如何取而代之的是变量值?

【问题讨论】:

  • 你会分享更多代码还是准备小提琴?
  • 看起来您的指令无法访问插件。您是否尝试在指令中获取插件数据?
  • 这是一个小提琴:jsfiddle.net/k8ffmbL0/1

标签: javascript jquery angularjs angularjs-directive jquery-plugins


【解决方案1】:

试试这个:

HTML:

<h2 class="circle" text="{{ myController.myVar }}"></h2>

指令:

return {
    restrict: 'C',
    link: function(scope, element, attrs) {
        attrs.$observe('text', function(newval) {
            if (newval) {
                $(element).text(newval).arctext({radius: 500})
            }
        });
    }
}

【讨论】:

  • 标题未显示。我想 arctext 插件使用 .text() 方法来获取元素内部的字符串。如何将插件应用于示例中的“文本”属性?
  • @BenjaminLemoine 我更新了答案。见小提琴here
  • 好的,但它不适用于我的项目。我不知道为什么......当页面第一次加载时(即:刷新按钮),标题显示正确但没有弯曲(就像插件没有实例化一样)。如果我点击一个链接,然后我回到这个页面,标题会正确显示和弯曲。就像,第一次,插件还没有初始化。我无法在小提琴上重现问题...
  • $observe 元素被触发了两次。在使用jQuery函数之前测试属性值是否不为空解决了我的问题。
猜你喜欢
  • 2013-09-10
  • 2017-11-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-03-13
  • 1970-01-01
  • 2015-06-02
  • 2016-09-04
相关资源
最近更新 更多