【问题标题】:Change Lable of fields dynamically in keystone在 keystone 中动态更改字段标签
【发布时间】:2018-06-28 23:24:54
【问题描述】:

我想根据字段的输入更改 keystoneJS (0.3.17) 中的标签。 'dependsOn' 不起作用。 KeystoneJS 会覆盖具有相同名称的字段,因此只保留最后一个“stockValue”行。

var keystone = require('keystone');
var config = require('../config/config');
var Types = keystone.Field.Types;

var Stock = new keystone.List('Stock', {
  map: { name: 'label' },
  autokey: { path: 'slug', from: 'label country', unique: true },
  defaultSort: '-slug'
});

Stock.add(
      'Stock',
      { label: { type: String, required: true, initial: true }},
      { country: { type: Types.Select, options: config.models.selectCountry, required: true, initial: true }},

      // de
      { stockValue: { label: 'DAX' , type: Types.Number , dependsOn: { country:'de'} }  },

      // // uk
      { stockValue: { label: 'FTSE', type: Types.Number , dependsOn: { country:'en'} } },

      // // fr
      { stockValue: { label: 'CAC 40', type: Types.Number , dependsOn: { country:'fr'} } },

    );

有什么办法可以改变表单字段的标签 onChange 的选择吗? 是否有类似 onPopulate 的事件? 我也尝试过 'watch' 选项,但这似乎仅适用于保存,不适用于标签的值。

有什么建议吗?

【问题讨论】:

    标签: mongoose keystonejs


    【解决方案1】:

    字段的标签不能在管理面板中动态更改。您可以使用一些 CSS 更改它的内容:通过在 keystone.init 中指定 adminui custom styles 属性以指向 LESS 文件,您可以更改管理面板的 CSS(但不是 JS)。

    在管理面板中,每个标签都有一个 for 属性,您可以使用 CSS 属性选择器 (label[for='replaceme']) 定位该属性。您可以使用它来更改标签 (::after) 中显示的内容,尽管没有编程或动态的方式来执行此操作。

    【讨论】:

    • 好的,谢谢。我会试试这个,即使我不是 CSS 专家。使用回调会更容易。
    猜你喜欢
    • 2020-12-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-26
    • 2020-12-28
    • 2018-04-30
    • 1970-01-01
    相关资源
    最近更新 更多