【问题标题】:Select category not updating sub category选择类别不更新子类别
【发布时间】:2016-03-18 01:06:36
【问题描述】:

这是假设查看用户类别选择,然后更新子类别。该解决方案是其他人推荐的,但我似乎无法使其正常工作。当我选择类别时,子类别不会更新。谁能让我知道我错过了什么。

路径:category.js

<template name="category">
    {{#autoForm collection="Meteor.users" id="categoryForm" doc=currentUser type="update"}}
        {{> afQuickField name='profile.categories'}}
    {{/autoForm}}   
</template>

路径:Schema.js

var fruitArr = ['apple', 'banana'];
var vegetablesArr = ['carrot', 'broccoli'];

Schema.Category = new SimpleSchema({
    category: {
        type: String,
        label: "Category",
        allowedValues: ['fruit', 'vegetables']
    },
    subcategory: {
        type: String,
        label: "Subcategory",
        allowedValues: _.union(fruitArr, vegetablesArr),
        autoform: {
            options: function () {
                let category = AutoForm.getFieldValue("category");
                if (!category) return [{label: "Please select a category first", value: ""}];

                if (category === "fruit") return _.map(fruitArr, (v, i) => ({
                    label: "Fruit " + (i + 1) + ": " + v,
                    value: v
                }));
                else return _.map(vegetablesArr, (v, i) => ({label: "Vegetables " + (i + 1) + ": " + v, value: v}));
            }
        }
    }
});

Schema.UserProfile = new SimpleSchema({
    categories: {
        type: Schema.Category,
        optional: true,
    }
});

【问题讨论】:

    标签: javascript meteor meteor-autoform meteor-collection2


    【解决方案1】:

    在浏览器的控制台日志中调用AutoForm.getFormValues('categoryForm');时,会返回如下结果:

    {
       "insertDoc":{
          "profile":{
             "categories":{
                "category":"fruit"
             }
          }
       },
       "updateDoc":{
          "$set":{
             "profile.categories.category":"fruit"
          },
          "$unset":{
             "profile.categories.subcategory":""
          }
       }
    }
    

    从上面可以看出,架构字段subcategory 被引用为profile.categories.subcategory。因此,subcategory 字段不会更新,因为AutoForm.getFieldValue("category"); 返回undefined

    您可以通过更改来修复此错误

    let category = AutoForm.getFieldValue("category"); 
    

    let category = AutoForm.getFieldValue("profile.categories.category");
    

    subcategory 架构字段中的options 函数中。

    【讨论】:

      猜你喜欢
      • 2020-05-06
      • 1970-01-01
      • 2019-06-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-01-01
      • 1970-01-01
      相关资源
      最近更新 更多