因此,我有一个Drupal8站点,它利用Vue.JS在每个页面上呈现各种类型。有很多依赖于数据的Vue.JS组件,比如用户购物篮(这是一个电子商务站点)。
我正面临一个问题,我使用Drupal视图来查询数据并向用户显示数据,在本例中,它是在页面上显示产品。这个Drupal视图使用AJAX对结果进行分页和过滤。第一个加载是在服务器端完成的,但是分页或过滤是通过AJAX完成的。
现在,这些返回的产品显示为“卡片”,卡片包含一个Vue.JS组件,该组件基本上是数量选择和添加到篮子按钮,用于处理该流程。
问题是,如果Drupal重新加载DOM元素(产品卡),Vue.JS“添加到篮子”组件不会通过Vue.JS呈现。我知道这是为什么,理想情况下,Vue.JS应该是驱动产品列表和查询Drupal API端点的东西,但这样我就会失去Drupal的一些好处,比如第一次加载的服务器端呈现、分页、搜索、过滤等。
所以我的问题是:我能做些什么让Vue.JS知道页面上的组件发生了变化并让Vue.JS呈现它们吗?
发布于 2020-07-22 05:37:22
我认为您正在寻找drupal行为。
它在请求完成时触发(包括ajax和页面加载)。
我认为代码应该是这样的:
Drupal.behaviors.myBehavior = {
attach: function (context, settings) {
//context will throw the ajax response.
//You can check in the context var
//if the response is the one you need to trigger vuejs
console.log(context);
MyvueInstance.load_my_data(context); //or whatever you need to say to Vuejs...
}
};检查接口:
https://www.drupal.org/docs/8/api/javascript-api/javascript-api-overview
https://stackoverflow.com/questions/62992336
复制相似问题