2015-12-02 73 views
0

我有这个变化事件,我想根据enrollmentId的值显示儿童的值都选择,更改事件实际上是在控制台上工作我可以看到注册ID的ID,但在儿童选项上,所有的孩子都被传递。基于第一选择的值的流星变化事件

'change select[name=enrollmentId]': function(event, template) { 
    var enrollmentId = $(event.target).val(); 
    console.log(enrollmentId); 
    template.$('select[name=childrenId]').val(enrollmentId); 
    }, 

enrollmentId实际上是父亲,所以如果用户选择父亲,只有他的孩子会出现在下拉列表中。

任何帮助将深表谢意。

感谢,

编辑:这里是我的架构:

enrollmentId: orion.attribute('hasOne', { label: "Principal Name", autoform: { afFormGroup: { 'formgroup-class': 'col-xs-6 col-sm-4' } } }, { collection: Enrollments, titleField: 'fullName', additionalFields:['_id'], publicationName: 'enrolledClaim', filter: function(userId) { var user = Meteor.users.findOne({"_id": userId},{fields: {profile: 1}}); if (Roles.userHasRole(userId, "admin")) { // console.log("Hello Admin"); return {}; } else if (Roles.userHasRole(userId, 'HQ')) { // console.log("Hello HQ"); return { company: user.profile.company }; } else if (Roles.userHasRole(userId, 'Branch')) { // console.log("Hello Branch"); return { createdBy: userId }; } else if (Roles.userHasRole(userId, 'insurer')) { // console.log("Hello Insurer"); return {}; } } }), childrenId: orion.attribute('hasMany', { label: "Dependent-Children", optional: true, autoform: { afFormGroup: { 'formgroup-class': 'col-xs-6 col-sm-4' } }, }, { collection: Enrollments, titleField: 'children.name', additionalFields:['children.name'], pluralName: 'children', publicationName: 'childrenClaim', filter: function(userId) { var user = Meteor.users.findOne({"_id": userId},{fields: {profile: 1}}); if (Roles.userHasRole(userId, "admin")) { return {}; } else if (Roles.userHasRole(userId, 'HQ')) { return { company: user.profile.company }; } else if (Roles.userHasRole(userId, 'Branch')) { return { createdBy: userId }; } else if (Roles.userHasRole(userId, 'insurer')) { return "No Data"; } } }), 的过滤块是用来过滤基于用户配置文件中的字段。 我想我必须寻找其他解决方法。

再次感谢@ejb的努力。

回答

0

听起来好像您想要根据所选的enrollmentId动态更改您的childrenId下拉列表中的可用选项。

我还没有看到所有的代码,但是你将不得不做这样的事情:

var selectedEnrollmentId = new ReactiveVar(); 

Template.myForm.events({ 
    'change select[name=enrollmentId]': function(event, template) { 
     selectedEnrollmentId.set($(event.target).val()); 
    } 
}); 

Template.myForm.helpers({ 
    childrenOptions: function() { 
     return Children.find({enrollmentId: selectedEnrollmentId.get()}); 
    } 
}); 

然后在你的myForm模板,你可以遍历childrenOptions,它会动态更新。

请注意,此代码未经测试。

希望有所帮助。

+0

感谢@ejb为此。 – Marvin

+0

感谢@ejb为此。 但问题出在我的模板中,我有一个快速域块 '{{> afQuickField name =“childrenId”}}'并且此字段来自orion属性'hasMany'与其他集合的关系。 我已经在他们的[回购](https://github.com/orionjs/orion/issues/368)上提出过这个问题,目前,关系的行为是通过所有文件中的字段适合所有情况。我想我必须为此寻找另一种解决方法。 – Marvin