在Plone 5中使用分面视图中的模型模式

时间:2016-07-22 13:02:13

标签: javascript plone-5.x

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

https://stackoverflow.com/a/35699974/637399中@ebrehault写道,模式是在加载时初始化的,如果DOM发生变化并包含新元素,则需要调用Registry.scan($('#content-core')),其中Registrypat-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)。我如何收听其中一个事件,我需要哪一个,然后如何调用扫描?

2 个答案:

答案 0 :(得分:4)

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

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

注意:当你说:

  

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

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

答案 1 :(得分:1)

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

define([
    'pat-registry'
], function(Registry) {
  'use strict';
    $(Faceted.Events).bind(Faceted.Events.AJAX_QUERY_SUCCESS, function() {
      Registry.scan($('#content-core'));
    });
});