Alexander Mills
Alexander Mills

Reputation: 100476

Backbone View showing then disappearing

I have a view created with Backbone.js and inserted into a div element - it shows for about a second and then disappears.

Here is my code for the view:

var addPlayerView = Backbone.View.extend({
    tagName: "div",
    model: Player,
    id: 'addPlayerDiv',

    initialize: function() {
        console.log('addPlayerView has been created');
    },

    render: function (){
        this.$el.html('<p>show this puppy</p>');
        return this;
    }
});

here is the model:

var Player = Backbone.Model.extend({
    defaults: {
        ID: "",
        firstName: '',
        lastName: ''
    },

    idAttribute: "ID"
});

and here is the HTML:

 <form onsubmit="addNewPlayer();">
        <input type="submit" value="Add New Player New"/>
 </form>

<p>
<div id="addPlayerDiv"></div>
</p>

<script>

        function addNewPlayer() {
            var player = new Player({});
            var newPlayerView = new addPlayerView({el: $("#addPlayerDiv"), model: player});
            newPlayerView.render();
        };

</script>

The addNewPlayer() function is being called correctly and the newPlayerView is rendering on the page, but only for a second, then it disappears on the page.

No idea what to do. Anyone have this problem before?

Upvotes: 0

Views: 98

Answers (1)

Oleksandr T.
Oleksandr T.

Reputation: 77522

You need cancel the default action (in our case onsubmit tries send data to server)

<form onsubmit="addNewPlayer(); return false;">

or

<form onsubmit="addNewPlayer(event);">

function addNewPlayer(e) {
  e.preventDefault();
  .....
}

Example

Upvotes: 3

Related Questions