MeteorJs aldeed-autoform,如何从布尔复选框中获取所需的值
MeteorJs aldeed-autoform, How to get desired value from boolean checkbox
我的代码中有布尔复选框。我的看法是,检查时,它的值应该 return 为真,未检查时,它的值应该 return 为假。但是我面临不同的情况,如下:
在页面初始加载时,显示消息:'not selected'
当我选中复选框时,它会显示值:'true'
当我取消选中该复选框时,它会坚持显示值:'true'
所以它总是向我显示值 'true',甚至是我选中或取消选中它的次数。
谁能指导我问题是什么以及如何纠正才能获得预期的结果:
这是自动表单 HTML 代码:
{{#autoForm collection='Collections.Category' validation='submit' id='CategoryInsertForm' class="form-horizontal form-with-legend" role="form" type='method' meteormethod='CategoryInsertMethod' }}
{{ currentFieldValue 'isParent' }}
{{> afFormGroup name='isParent' id='isParent' type="boolean-checkbox"}}
{{#if afFieldValueIs name="isParent" value= 'true'}}
{{> afFieldInput name='parentId' id='parentId' class='form-control'}}
{{/if}}
{{/autoForm}}
这是JS代码:
Template.registerHelper("currentFieldValue", function (fieldName) {
return AutoForm.getFieldValue( fieldName) || "not selected";
});
这是架构代码:
Collections.Category = new Mongo.Collection('category');
Schemas.Category = new SimpleSchema({
catId:{
type: String,
optional: true,
unique: true
},
isParent: {
type: Boolean,
optional: true,
defaultValue: false,
// ,allowedValues: [true, false]
label: "Parent category"
},
parentId: {
type: String,
label: "ParentID",
optional: true
},
title: {
type: String,
optional:true
}
});
Collections.Category.attachSchema(Schemas.Category);
我通过创建这样的助手解决了这个问题:
Template.myTemplate.events({
'change .myCheckboxClass': function(event) {
clickedElement = event.target;
clickedElement.value = !clickedElement.checked;
}
});
目前我正在使用以下设置解决类似问题:
模板:
<template name='test'>
{{autoFormTest}}
{{> quickForm collection="Sample" id="sampleForm" type="update" doc=this}}
</template>
JS:
Template.test.helpers({
autoFormTest: function(){
return AutoForm.getFieldValue("radiobuttonField", "sampleForm").toString();
}
})
架构的相关部分:
radiobuttonField: {
optional: true,
type: Boolean,
label: "Is it true?",
autoform: {
type: "boolean-radios",
trueLabel: "Yes",
falseLabel: "No "
}
}
助手将 return 一个 false
或 true
字符串,但它默认为 false
。因此,有两个重要部分与您的问题相关:
你应该在你的助手中指定表单的名称AutoForm.getFieldValue(..., "sampleForm")
如果你想从布尔选择器中取回字符串值(可以写出来)你应该将它转换成字符串 AutoForm.getFieldValue(...).toString()
希望对您有所帮助。
我的代码中有布尔复选框。我的看法是,检查时,它的值应该 return 为真,未检查时,它的值应该 return 为假。但是我面临不同的情况,如下:
在页面初始加载时,显示消息:'not selected' 当我选中复选框时,它会显示值:'true' 当我取消选中该复选框时,它会坚持显示值:'true' 所以它总是向我显示值 'true',甚至是我选中或取消选中它的次数。
谁能指导我问题是什么以及如何纠正才能获得预期的结果:
这是自动表单 HTML 代码:
{{#autoForm collection='Collections.Category' validation='submit' id='CategoryInsertForm' class="form-horizontal form-with-legend" role="form" type='method' meteormethod='CategoryInsertMethod' }}
{{ currentFieldValue 'isParent' }}
{{> afFormGroup name='isParent' id='isParent' type="boolean-checkbox"}}
{{#if afFieldValueIs name="isParent" value= 'true'}}
{{> afFieldInput name='parentId' id='parentId' class='form-control'}}
{{/if}}
{{/autoForm}}
这是JS代码:
Template.registerHelper("currentFieldValue", function (fieldName) {
return AutoForm.getFieldValue( fieldName) || "not selected";
});
这是架构代码:
Collections.Category = new Mongo.Collection('category');
Schemas.Category = new SimpleSchema({
catId:{
type: String,
optional: true,
unique: true
},
isParent: {
type: Boolean,
optional: true,
defaultValue: false,
// ,allowedValues: [true, false]
label: "Parent category"
},
parentId: {
type: String,
label: "ParentID",
optional: true
},
title: {
type: String,
optional:true
}
});
Collections.Category.attachSchema(Schemas.Category);
我通过创建这样的助手解决了这个问题:
Template.myTemplate.events({
'change .myCheckboxClass': function(event) {
clickedElement = event.target;
clickedElement.value = !clickedElement.checked;
}
});
目前我正在使用以下设置解决类似问题:
模板:
<template name='test'>
{{autoFormTest}}
{{> quickForm collection="Sample" id="sampleForm" type="update" doc=this}}
</template>
JS:
Template.test.helpers({
autoFormTest: function(){
return AutoForm.getFieldValue("radiobuttonField", "sampleForm").toString();
}
})
架构的相关部分:
radiobuttonField: {
optional: true,
type: Boolean,
label: "Is it true?",
autoform: {
type: "boolean-radios",
trueLabel: "Yes",
falseLabel: "No "
}
}
助手将 return 一个 false
或 true
字符串,但它默认为 false
。因此,有两个重要部分与您的问题相关:
你应该在你的助手中指定表单的名称
AutoForm.getFieldValue(..., "sampleForm")
如果你想从布尔选择器中取回字符串值(可以写出来)你应该将它转换成字符串
AutoForm.getFieldValue(...).toString()
希望对您有所帮助。