Javascript 选择不更新子类别的类别

Javascript 选择不更新子类别的类别,javascript,meteor,meteor-autoform,meteor-collection2,Javascript,Meteor,Meteor Autoform,Meteor Collection2,假设查看用户类别选择,然后更新子类别。这个解决方案是别人推荐的,但我似乎无法让它发挥作用。选择类别时,子类别不会更新。有人能告诉我我错过了什么吗 路径:category.js <template name="category"> {{#autoForm collection="Meteor.users" id="categoryForm" doc=currentUser type="update"}} {{> afQuickField name='pro

假设查看用户类别选择,然后更新子类别。这个解决方案是别人推荐的,但我似乎无法让它发挥作用。选择类别时,子类别不会更新。有人能告诉我我错过了什么吗

路径:
category.js

<template name="category">
    {{#autoForm collection="Meteor.users" id="categoryForm" doc=currentUser type="update"}}
        {{> afQuickField name='profile.categories'}}
    {{/autoForm}}   
</template>
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,
    }
});

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

{
   "insertDoc":{
      "profile":{
         "categories":{
            "category":"fruit"
         }
      }
   },
   "updateDoc":{
      "$set":{
         "profile.categories.category":"fruit"
      },
      "$unset":{
         "profile.categories.subcategory":""
      }
   }
}
从上面可以看到,模式字段
子类别
被引用为
profile.categories.subcategory
。因此,字段
子类别
不会被更新,因为
AutoForm.getFieldValue(“类别”)返回未定义的

您可以通过更改

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


子类别
架构字段中的
选项
函数中。

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

{
   "insertDoc":{
      "profile":{
         "categories":{
            "category":"fruit"
         }
      }
   },
   "updateDoc":{
      "$set":{
         "profile.categories.category":"fruit"
      },
      "$unset":{
         "profile.categories.subcategory":""
      }
   }
}
从上面可以看到,模式字段
子类别
被引用为
profile.categories.subcategory
。因此,字段
子类别
不会被更新,因为
AutoForm.getFieldValue(“类别”)返回未定义的

您可以通过更改

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

子类别
架构字段中的
选项
函数中