Meteor-AutoForm:如何根据另一个控件更新选择选项

2024-04-10

我一直在寻找一些问题的答案,这些问题应该非常简单,但我一生都无法弄清楚。

基本上我有一个带有两个选择控件的meteor-autoform:

<template name="processFormTemplate">
    {{#autoForm id="processForm" collection="Processes" type=formAction doc=doc validation="blur"}}
        <div class="col-md-12">
            {{> afQuickField name="elementId" options=elements}}
            {{> afQuickField name="categoryId" options=categories}}
            {{> afQuickField name="title"}}
            {{> afQuickField name="desc" rows=4}}
        </div>
        {{>formButtons}}
    {{/autoForm}}
</template>

然后,它们有帮助程序来填充选项:

Template.processFormTemplate.helpers({
  elements: function() {
    return getFormElements();
  },
  categories: function(elementId) {
    return getFormCategories(this.doc.elementId);
  }
});

库/methods.js

 getFormElements = function() {

        var options = [];

    Elements.find({}, {sort: {ref:1}}).forEach(function (element) {
                    options.push({
                        label: element.title, value: element._id
                    });
                });

    return options;

};

getFormCategories = function(elementId) {

    var options = [];
    var filter = {};

    if (!isBlank(elementId)) {
        filter.elementId = elementId;
    }

    Categories.find(filter, {sort: {ref:1}}).forEach(function (d) {
                    options.push({
                        label: d.title, value: d._id
                    });
                });

    return options;

};

现在我知道这不起作用,因为助手没有反应,但我不知道如何改变这种行为。我也尝试过加入“更改”事件,但由于某种原因这永远不会触发:

Template.processFormTemplate.events({
 'change #elementId': function(e) {
  console.log($('[name="elementId"]').val() + ' is now selected');
}
});

所需的行为是,当在第一个列表中选择新的 elementId 时,应根据所选的 elementId 刷新第二个列表中的选项列表。

非常感谢任何帮助。

谢谢, 大卫


我之前也遇到过同样的问题,花了几个小时才解决。您必须使用简单的模式来获取所选选项的值,如下所示,使用 autoform 的 api 调用 Autoform.getFieldValue:

Schemas.Store = new SimpleSchema({
center: {
    type: String,
    optional: true,
    autoform: {
        type: "select",
        options: function () {
            return Centers.find().map(function (c) {
                return {label: c.name, value: c._id};
            });
        }
    }
},
region: {
    type: String,
    optional: true,
    autoform: {
        type: "select",
        options: function () {
            if (Meteor.isClient) {
                var docId = '';

                docId = AutoForm.getFieldValue('storesForm', 'center');


               return Regions.find({center: docId}).map(function (c) {
                   return {label: c.name + ' (' + c.code + ')', value: c._id};
               });
            }
        }
    }
}, 
store_name: {
    type: String
} 
});

顺便说一句,我仍在使用[电子邮件受保护] /cdn-cgi/l/email-protection由于在5.0中使用Autoform.getFieldValue时遇到问题

我已向 aldeed 报告了 5.0.3 中的问题:https://github.com/aldeed/meteor-autoform/issues/785#issuecomment-84600515 https://github.com/aldeed/meteor-autoform/issues/785#issuecomment-84600515

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Meteor-AutoForm:如何根据另一个控件更新选择选项 的相关文章

随机推荐

  • 浏览器推送通知出现错误“AbortError:注册失败 - 推送服务不可用”

    我创建了一个系统 使用 Firefox 和 Chrome 的浏览器推送通知来与网站访问者进行更多交互 我正在查看我的 Google Analytics 事件 了解订阅失败的原因 最大的原因是 推送服务不可用 我查遍了一切 试图找到这意味着什
  • 使用 PowerShell 替换文本文件的内容

    我浏览了这个网站 似乎找不到任何适合我情况的内容 基本上 我正在尝试向 NETLOGON 文件编写一个附加内容 以替换所有用户桌面上的文本文件中的文本 当前文本全面静态 我想要更改的文本对于每个用户来说都是唯一的 我想将当前文本 user1
  • xmlstarlet:过滤掉带有属性的元素

    如何过滤掉某些类型的不具有神奇值属性的元素并保留文档的其余部分 所有这一切都使用xmlstarlet 到目前为止我所要做的是 cat lt lt EOF gt database xml
  • ECS 服务 - 使用新的 Docker 映像自动部署

    我想通过使用最新的 Docker 映像启动我的 ECS 服务来自动部署应用程序 据我了解 部署新镜像版本的方法如下 创建新的任务修订版 更新 Docker 存储库上的映像后 更新服务并指定新版本 这似乎可行 但我想通过 CLI 来完成这一切
  • SHA256CryptoServiceProvider 和相关的可以在 WinXP 上使用吗?

    是否可以在 Windows XP 上使用 SHA256CryptoServiceProvider 和相关 SHA2 提供程序 我知道提供商使用 Vista 及更高版本中包含的加密服务 是否可以在 Microsoft XP 中安装这些服务 E
  • 在 Objective-C 中存储和检索数字对的快速方法

    我正在实现排队洪水填充算法 需要存储和检索数字对NSMutableArray 基本上 我正在创建一个数组 m queue NSMutableArray array 然后有时我填充数组 m queue addObject NSValue va
  • 下载时出错

    下载控制台会返回以下错误 帧加载因策略更改而中断 Example a href app exe Start Download a Console Preview 我应该在中配置一些东西吗Compiler or QWeb设置 我发现了 在传统
  • 无法使用 Windows 10 移动技术预览版将通用应用程序部署到手机

    我已解锁开发者卢米亚 635昨天刚刚更新为Windows 10 移动版技术预览版 http windows microsoft com en us windows preview download phone 操作系统版本 10 0 125
  • Perl 构造函数应该返回 undef 或“无效”对象吗?

    Question 什么被认为是 最佳实践 and why 处理构造函数中的错误 最佳实践 可以引用 Schwartz 的话 或者 50 的 CPAN 模块使用它 等等 但我对任何人提出的合理意见感到满意 即使它解释了为什么常见的最佳实践并不
  • 无法在 Primefaces RequestContext.execute() 调用中显示对话框

    我有一个选项卡视图 只要用户选择该选项卡 我就想在其中刷新该选项卡的内容 我还希望在刷新选项卡时弹出模式对话框 这是带有 tabChange ajax 事件处理程序的 tabView
  • 日语/字符的编程技巧[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我有一个想法 可以编写一些网络应用程序来帮助我 也许还有其他人 更好地学习日语 因为我正在学习日语 我的问题是该网站主要是英文的 所以
  • 从 for 循环 Python 将数字列表打印为数组

    使用下面的代码 它会一一打印值 phase 我正在尝试将这些值打印为 for 循环之外的数组 import math Period 6 2 time1 datafile1 0 magnitude1 datafile1 1 for i in
  • Swift REPL:如何保存/加载 REPL 状态? (又名挂起/恢复、快照、克隆)

    在 Swift REPL 中 保存 REPL 状态的方法是什么 例如 我想在 REPL 中做一堆工作 然后保存它 以便稍后加载 这个概念可能被命名为保存 加载 挂起 恢复 快照 克隆 序列化 反序列化等 任何让我实现这一目标的解决方案都会有
  • python中的单词排序

    在Python中是否可以不根据英语字母表而是根据自己创建的字母表对单词列表进行排序 您通常可以定义自定义比较方法 以便在您的限制范围内执行排序 我一生中从未编写过一行 Python 代码 但它与 Ruby 非常相似 让我注意到以下摘录自这一
  • gluUnProject Android OpenGL ES 1.1 用法

    我正在尝试使用 gluUnProject 将 Windows 坐标转换为世界坐标 我不想在模拟器或旧版 Android 系统 使用 OpenGL ES v1 0 中获取工作示例 这不是关于 GL 函数可用性的问题 我正在尝试使用 OpenG
  • 逻辑或运算符与按位或运算符

    有谁知道为什么 if false true true System out println True else System out println False Print True if false true true System ou
  • 如何在 Rails 中发送简单的 json 响应?

    我需要发送 json 响应取决于用户在输入中输入的数据 但我无法发送简单的 json 请求 我关注了这篇文章 http paydrotalks com posts 45 standard json response for rails an
  • MSI 安装程序自定义操作身份问题

    我正在创建一个在数据库上执行脚本的自定义操作 问题是 connectios 使用集成安全性 因此当我尝试打开连接时出现错误 用户 Domain ComputerName 登录失败 当我检查自定义操作的身份时 使用System Securit
  • CSS属性在github中以红色突出显示

    The touch actionSCSS 文件中的属性在 Github diff 中以红色突出显示 有什么理由吗 这是它的 DOM 如果存在语法错误 Github 会突出显示这样的代码 它不是 100 准确 而且它实际上并没有运行您的代码
  • Meteor-AutoForm:如何根据另一个控件更新选择选项

    我一直在寻找一些问题的答案 这些问题应该非常简单 但我一生都无法弄清楚 基本上我有一个带有两个选择控件的meteor autoform