5

当我<span class="pat-moment">2016-07-30T15:10:00</span>faceted:view(eea.facetednavigation 的自定义视图)中使用任何样机模式时,该模式根本不起作用,因为内容是用 javascript 注入的。

https://stackoverflow.com/a/35699974/637399 @ebrehault 写道,模式在加载时初始化,如果 DOM 更改并包含新元素,您需要调用Registry.scan($('#content-core'))where Registryispat-registry#content-core页面的注入部分。

如何在 eea.facetednavigation ( https://github.com/eea/eea.facetednavigation ) 的上下文中执行此操作?它使用事件系统(参见https://github.com/eea/eea.facetednavigation/blob/master/eea/facetednavigation/browser/javascript/view.js)。我如何收听这些事件之一,我需要哪一个以及如何调用扫描?

4

2 回答 2

4

您需要绑定到 eea 的 AJAX_QUERY_SUCCESS 事件:

$(Faceted.Events).bind(Faceted.Events.AJAX_QUERY_SUCCESS, function() {
        Registry.scan($('#content-core'));
});

注意:当你说:

和#content-core 页面的注入部分。

这不准确,它不是特定的注入目标(顺便说一下,当您使用模式时并不总是注入,在您的情况下,注入是由 eea.faceted 管理的,这不是模式)。您可以重新扫描 DOM 的任何部分,您只需要确保您重新扫描的部分包含您想要激活的模式(body例如就可以了)。

于 2016-07-22T21:58:56.257 回答
1

对于 Plone 5:我将下面的代码片段注册为我插件的registry.xml中的资源,将其包含在我的registry.xml的 bundles 插件中,并使用./bin/plone-compile-resources脚本重建我的插件包.

define([
    'pat-registry'
], function(Registry) {
  'use strict';
    $(Faceted.Events).bind(Faceted.Events.AJAX_QUERY_SUCCESS, function() {
      Registry.scan($('#content-core'));
    });
});
于 2018-03-19T12:59:44.890 回答