2

我的代码中有布尔复选框。我的看法是,在检查时,它应该将其值返回为真,而在未检查时,它应该将其值返回为假。但我面临不同的情况,如下:

在页面的初始加载时,它显示消息:'未选中'当我选中复选框时,它显示我的值:'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);
4

2 回答 2

1

我通过创建一个这样的助手来解决这个问题:

Template.myTemplate.events({
'change .myCheckboxClass': function(event) {
    clickedElement = event.target;
    clickedElement.value = !clickedElement.checked;
}
});
于 2015-04-14T15:09:09.477 回答
0

目前我正在使用以下设置来解决类似的问题:

模板:

<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 "
    }
}

助手将返回 afalsetrue字符串,但默认为false. 因此,有两个与您的问题相关的重要部分:

  1. 您应该在助手中指定表单的名称AutoForm.getFieldValue(..., "sampleForm")

  2. 如果您想从布尔选择器中取回字符串值(可以写出),您应该将其转换为字符串AutoForm.getFieldValue(...).toString()

希望有帮助。

于 2016-09-28T11:41:20.040 回答