AmpersandJS / ampersand

Quickest way to get started with ampersand.
MIT License
812 stars 41 forks source link

CLI-generated form doesn't respect `required` property of the model #100

Open e2jk opened 9 years ago

e2jk commented 9 years ago

Extract of a model called "object":

    props: {
        id: 'any',
        abbreviation: ['string', true, ''],
        description: ['string', false, ''],

Extract of the form generated by $ ampersand gen form client/models/object.js:

module.exports = FormView.extend({
    fields: function () {
        return [
            new InputView({
                label: "Abbreviation",
                name: "abbreviation",
                value: this.model.abbreviation || "",
                required: false,
                placeholder: "Abbreviation",
                parent: this
            }),
            new InputView({
                label: "Description",
                name: "description",
                value: this.model.description || "",
                required: false,
                placeholder: "Description",
                parent: this
            }),

Both InputView have required: false, while the first one should have been required: true.

The input template is located at lib/templates/input.js and contains the following:

 required: {{{ required }}},

Meaning that the value "false" is not hardcoded. Investigating further, the value of the required variable seems to be determined in lib/gen-types/form.js:

 required: !!definition.required,

That's about as far as I get with my current understanding of Ampersand.js. Does anyone have an idea what's going wrong in this case?