我一直在搜寻 SO 问题,以寻找应该非常简单的问题的答案,但对于我的生活,我无法弄清楚。
基本上我有一个带有两个选择控件的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 刷新。
非常感谢任何帮助。
谢谢,大卫