gpt4 book ai didi

javascript - 使用指令将小部件集成到 Angular 应用程序中

转载 作者:行者123 更新时间:2023-11-29 21:31:12 25 4
gpt4 key购买 nike

因此,我目前已将 Yotpo 的“评论和评论”集成到我的 Angular 应用程序中。

它由一个 javascript 小部件和一些 Html 组成:

Js:

var e=document.createElement("script");

e.type="text/javascript",
e.async=true,
e.src="//staticw2.yotpo.com/API/widget.js",
e.id="test";

var t=document.getElementsByTagName("script")[0];
t.parentNode.insertBefore(e,t);

HTML:

<div class="yotpo yotpo-main-widget"
data-product-id="{{ product.sku }}"
data-name="{{ product.title }}"
data-url="{{ pageUrl }}"
data-image-url="{{ pageImage }}"
data-description="{{ product.description }}">
</div>

通过将 JS 放入指令中,我已经让它工作了,但是,它只有在您重新加载页面时才会工作。

为了尝试解决这个问题,我在用户离开页面时删除脚本,并在用户返回页面时重新插入脚本

示例:

link: function ($scope, elem) {
elem.bind('$destroy', function() {
var widgetScript = angular.element('#foo');
jQuery(WidgetScript).remove();
});

function loadWidget() {
var e=document.createElement("script");

e.type="text/javascript",
e.async=true,
e.src="//staticw2.yotpo.com/API/widget.js",
e.id="foo";

var t=document.getElementsByTagName("script")[0];
t.parentNode.insertBefore(e,t);
}

loadWidget();
}

不幸的是,这不起作用。任何建议将不胜感激。

最佳答案

所以我找到了一个解决方案,我想我会把它贴在这里,因为我相信如果其他人将 Yotpo 与 Angular 一起使用,他们无疑会遇到这个问题。

答案是yotpo.initWidgets();

不幸的是,Yotpo 的文档中没有关于此的信息。

所以这就是我最终所做的,而且它就像一个魅力:

.directive('yotpo', function ($document, $timeout) {
return {
restrict: 'AE',
link: function() {

function loadWidget() {
var e = document.createElement("script");

e.type = "text/javascript",
e.async = true,
e.src = "//staticw2.yotpo.com/API/widget.js",
e.id = "test";

var t = document.getElementsByTagName("script")[0];
t.parentNode.insertBefore(e,t);
}

loadWidget();

if (typeof yotpo !== 'undefined') {
$timeout(function () {
yotpo.initWidgets();
}, 500)

}
}
}

关于javascript - 使用指令将小部件集成到 Angular 应用程序中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36423866/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com