Coder Social home page Coder Social logo

Comments (7)

fonji avatar fonji commented on June 12, 2024

What if value.length != this.items.length?

from backbone-forms.

sniederb avatar sniederb commented on June 12, 2024

I'm not saying my Overwrite is bug-free, but the current setvalue() implementation definitely causes problems. Probably for for-loop would need to work with addItem / removeItem ?

from backbone-forms.

fonji avatar fonji commented on June 12, 2024

Probably, yes.
I was just concerned because you said that you overwrote it, so I thought you might have a bug in production somewhere.

from backbone-forms.

sniederb avatar sniederb commented on June 12, 2024

Sorry about the misleading wording. I want to use the backbone forms JS unchanged, so I'm overwriting some prototype functions in my own code. My suggestion (haven't tested it):

Backbone.Form.editors.List.prototype.setValue = function(value) {
    this.value = value;
    if (!$.isArray(value)) {
        throw new Error("List value must be an array");
    }

    for (var i = 0; i < value.length; i++) {
        if (this.items.length < i) {
            this.items[i].setValue(value[i]);   
        }
        else {
            this.addItem(value[i], false);
        }
    }

    while (this.items.length > value.length) {
        this.removeItem(this.items[this.items.length - 1]); 
        if (value.length === 0 && this.items.length === 1) {
            // beware that removeItem() will re-add a new item 
            // if 'this.items' is empty
            break;
        }
    }

};

from backbone-forms.

glenpike avatar glenpike commented on June 12, 2024

I've been trying to reproduce this at a higher level - possibly misunderstand what you're trying to achieve. Anyway, I've created a JSFiddle which calls setValue on the field - but nothing seems to change in the editors. Is that what you mean by "not detached", or are you talking about something else (perhaps there's 2 bugs here, or I'm testing something that shouldn't normally happen?)

from backbone-forms.

sniederb avatar sniederb commented on June 12, 2024

I've taken your JSFiddle and extended it a bit to this one.

I'd expect the list to re-render on the form.setValue() call, for seem reason that's not happening. If the list get's re-rendered, the .change() handler doesn't get called anymore, because this.$el was replaced.

from backbone-forms.

glenpike avatar glenpike commented on June 12, 2024

I see what you mean now.

The other problem is that if you console.log form.getValue() after clicking the button, you have 6 items in your array - that's #372 all over. I think I'll try to look at that pull-request to see if we can solve your issue too.

from backbone-forms.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.