【问题标题】:Event on Keystone JS view not workingKeystone JS 视图上的事件不起作用
【发布时间】:2017-12-12 07:55:35
【问题描述】:

我正在使用 KeystoneJS 做一个电子商务网站(学习目的)。在显示所有产品的视图中,我想添加一个过滤器以按价格对项目进行排序,另一个过滤器仅显示一个品牌的产品。需要两份表格,但我不能只提交一份

我的 products.pug 看起来像这样

.container
  form(method='post')
    input(type='hidden', name='action', value='products')
    button(type='submit').btn.btn-primary Send

我在 routes/views/ 中的 products.js 看起来像这样

[...]
// Print a word when submit the form
view.on('post', { action: 'products' }, function(next) {
  console.log('POST')
  next()
})
// Get all products from db
view.on('init'...)
// Render
view.render('products')

所以基本上我想做的是在我点击视图中的按钮时打印 POST 。相反,我收到一个 404 错误页面。如果你们能帮助我,我将不胜感激

【问题讨论】:

  • 我应该补充一点,如果我将表单中的方法和事件中的动词更改为 GET 并删除第二个参数,它会打印单词。为什么它不适用于方法 post?
  • 这看起来是正确的。您是否尝试将表单方法设为 POST 而不是 post
  • 是的,而且一直出错。我选择使用方法 GET 并将所有内容放在一种形式中,但我真的很想解决这个问题,因为正如你所说,这似乎是正确的

标签: javascript node.js pug keystonejs


【解决方案1】:

知道了!在 /routes/index.js 我替换了

app.get('/products', route.views.products);

app.all('/products', route.views.products);

我觉得很傻但是很开心。

【讨论】:

  • 最后我也明白了。谢谢你。我在一页中有不同的输入字段,这可能会导致麻烦。知道为什么我们需要 <input type="hidden" name="action" value="contact"> 形式的隐藏输入吗?
  • 很高兴我帮助了你!关于输入:我想这只有在您发出不同的 POST 请求(多种形式)并且这些请求由相同的路由处理时才有必要,因此对于每个请求,您都有一个不同的 input:hidden 具有特定的值和操作。至少,这是我所做的,到目前为止我还没有遇到任何问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-04-02
  • 2018-11-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-06-13
  • 2022-08-07
相关资源
最近更新 更多