47 votes

Le plus simple des exemples de backbone.js

Je suis de la création d'un os à nu le squelette exemple pour essayer de l'apprendre et je rencontre des problèmes à obtenir mon point de vue pour le rendu. Je l'ai basé sur Thomas Davis tutoriel mais regardé de nombreuses autres applications et tutoriels disponibles.

Je vais changer Davis tutoriel pas seulement parce que je veux ajouter une zone de saisie, mais aussi parce que fondée sur l'épine dorsale docs que j'ai pensé qu'il fallait moins de code et une structure différente. Bien sûr, parce que je ne peux pas obtenir que cela fonctionne, je ne sais pas ce qui est nécessaire et ce qui ne l'est pas.

Mon but ultime était de simplement ajouter les noms en li balises ul#friends-list, bien que je ne pense pas qu' el: 'body' va m'aider.

Ce que je fais mal? Merci pour toute aide.

Mon code html:

<!DOCTYPE HTML>
<html>
<head>
<title>Tut</title>
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.5.2/jquery.min.js"></script>
<script type="text/javascript" src="http://ajax.cdnjs.com/ajax/libs/underscore.js/1.1.4/underscore-min.js"></script>
<script type="text/javascript" src="http://ajax.cdnjs.com/ajax/libs/backbone.js/0.3.3/backbone-min.js"></script>
</head>
<body>

<input type="text" placeholder="Enter friend's name" id="input" />
<button id="add-input">Add Friend</button>

<ul id="friends-list">
</ul>
<script type="text/javascript" src="test.js"></script>
</body>
</html>

Mon test.js

$(function() {

Friend = Backbone.Model.extend();
//Create my model

var friends = new Friend([ {name: 'Eddard Stark'}, {name: 'Robert Baratheon'} ]);
//Create new models to be used as examples


FriendList = Backbone.Collection.extend({
    model: Friend
});
//Create my collection

var friendslist = new FriendList;
//Created to hold my friends model


FriendView = Backbone.View.extend({

    tagName: 'li',

    events: {
        'click #add-input':  'getFriend',
    },

    initialize: function() {
        _.bindAll(this, 'render');
    }, 

    getFriend: function() {
        var friend_name = $('#input').val();
        var friend_model = new Friend({name: friend_name});
    },

    render: function() {
        console.log('rendered')
    },

});

var view = new FriendView({el: 'body'});
});

88voto

Thomas Davis Points 1633

Thomas Davis ici, vous avez eu certains problèmes fondamentaux avec votre code pour obtenir la fonctionnalité dont vous avez besoin. J'ai tourné votre code dans un jsfiddle et vous pouvez voir la solution de travail ici.

http://jsfiddle.net/thomas/Yqk5A/

Code

<!DOCTYPE HTML>
<html>
<head>
<title>Tut</title>
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.5.2/jquery.min.js"></script>
<script type="text/javascript" src="http://ajax.cdnjs.com/ajax/libs/underscore.js/1.1.4/underscore-min.js"></script>
<script type="text/javascript" src="http://ajax.cdnjs.com/ajax/libs/backbone.js/0.3.3/backbone-min.js"></script>
</head>
<body>

<input type="text" placeholder="Enter friend's name" id="input" />
<button id="add-input">Add Friend</button>

<ul id="friends-list">
</ul>
<script type="text/javascript" src="test.js"></script>
</body>
</html>
$(function() {

FriendList = Backbone.Collection.extend({
    initialize: function(){

    }
});

FriendView = Backbone.View.extend({

    tagName: 'li',

    events: {
        'click #add-input':  'getFriend',
    },

    initialize: function() {
        var thisView = this;
        this.friendslist = new FriendList;
        _.bindAll(this, 'render');
        this.friendslist.bind("add", function( model ){
            alert("hey");
            thisView.render( model );
        })
    },

    getFriend: function() {
        var friend_name = $('#input').val();
        this.friendslist.add( {name: friend_name} );
    },

    render: function( model ) {
        $("#friends-list").append("<li>"+ model.get("name")+"</li>");
        console.log('rendered')
    },

});

var view = new FriendView({el: 'body'});
});

J'ai remarqué que tu voulais que peu de code que possible donc j'ai laissé des choses que vous n'avez pas besoin de déclarer un modèle réel. Il pourrait être plus facile si vous utilisez une collection comme dans l'exemple à la place.

Aussi, je viens de lancer un nouveau site qui contient de l'épine Dorsale des tutoriels qui peuvent vous aider à résoudre votre problème.

BackboneTutorials.com

1voto

Ashish Nautiyal Points 643

Vous pouvez consulter cet exemple simple de modèles de backbone et de collections

Modèle de colonne vertébrale et exemple de collection

0voto

Sinbadsoft.com Points 1510

Vous pouvez consulter ce tutoriel rapide http://www.sinbadsoft.com/blog/backbone-js-by-example-part-1/

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X