MeteorJs aldeed-autoform, Как получить желаемое значение из логического флажка

В моем коде есть логический флажок. как я понимаю, при проверке он должен возвращать свое значение как истинное, а при отсутствии проверки он должен возвращать свое значение как ложное. Но я сталкиваюсь с другой ситуацией, которая заключается в следующем:

При начальной загрузке страницы отображается сообщение: «не выбрано». Когда я устанавливаю флажок, он показывает мне значение: «истина». Когда я снимаю флажок, он показывает мне значение: «истина». Таким образом, он всегда показывает мне значение «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);

person Simpanoz    schedule 24.03.2015    source источник


Ответы (2)


Я работал над этим, создав такой помощник:

Template.myTemplate.events({
'change .myCheckboxClass': function(event) {
    clickedElement = event.target;
    clickedElement.value = !clickedElement.checked;
}
});
person hiester    schedule 14.04.2015

В настоящее время я использую следующую настройку для аналогичной проблемы:

Шаблон:

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

Помощник вернет строку false или true, но по умолчанию она равна false. Итак, есть две важные части, связанные с вашим вопросом:

  1. вы должны указать имя формы в вашем помощнике AutoForm.getFieldValue(..., "sampleForm")

  2. если вы хотите вернуть строковое значение (которое можно записать) из логического селектора, вы должны преобразовать его в строку AutoForm.getFieldValue(...).toString()

Надеюсь, это поможет.

person bencekd    schedule 28.09.2016