如何在Backbone-form中填写复选框

时间:2012-03-03 17:33:26

标签: javascript json checkbox backbone.js

我试图填充一个数组复选框与其他来自json数组。我的代码很简单,

var cmyBox = Backbone.Collection.extend({
    model: mmyBox,
    url: 'http://localhost/wordpress/oferta/prueba1/?json=get_taxonomy&taxonomy=habilidad',
    parse: function (resp) {
        var skillsname = new Array();
        var i = 0;
        resp.terms.forEach(function(item) {
            skillsname[i] = item.slug
            i++
        });
        console.log(skillsname);
        return skillsname;
    }
});

var Form = Backbone.Model.extend({
    schema: {
        id:                     {},
        nombre:                 {},
        apellidos:              {},
        email:                  { type: 'Text', dataType: 'email', validators: ['required', validateEmail] },
        telefono:               { type: 'Text', dataType: 'tel', validators: ['required'] },
        nacionalidad:           { type: 'Select', options: ['Española', 'Extranjera'] },
        link1:                  { type: 'Text', title: 'Enlace a Reel', dataType: 'url' },
        link2:                  { type: 'Text', title: 'Enlace a Web/Blog', dataType: 'url' },
        others:                 { type: 'Text', dataType: 'url' },
        skills1:                { type: 'Checkboxes', options: cmyBoxes },
    }
});
var List = new Form ({
    skills1: true
});

问题是数组是创建的并且具有我需要的东西,但它不是它必须的位置。我不知道将收集结果分配给该字段。也许我做错了。我想做的是:

skills1:                { type: 'Checkboxes', options: ["artist", "medico", "programador"] },

由于

1 个答案:

答案 0 :(得分:2)

我找到了解决方案,对于需要它的人。使用toString函数,它非常有用......

  var mmyBox = Backbone.Model.extend({
        toString: function() { return this.get('slug'); }
    });
   var cmyBox = Backbone.Collection.extend({
        model: mmyBox,
        url: 'http://localhost/wordpress/oferta/prueba1/?json=get_taxonomy&taxonomy=habilidad',
        parse: function (resp) {
            return _.map( resp.terms, function( item ){
              return {
                  id: item.id,
                  slug: item.slug
              };
            });
        }
    });