2013-10-11 5 views
0

considérant que je suis nouveau à Backbone j'ai réussi à construire ma première application Backbone qui, au moment où il ne liste que les gens et leur nationalité basée sur un fichier JSON local:modifier Backbone ou supprimer un utilisateur

var Person = Backbone.Model.extend({ 
    defaults: { 
     Name: '', 
     Country:'' 
    } 
}); 

var PersonCollection = Backbone.Collection.extend({ 
    model: Person, 
    url: 'users.json' 
}); 

var PersonList = Backbone.View.extend ({ 
    el: '.inner', 
    initialize: function() { 
    var people = new PersonCollection(), 
     that = this; 
    people.fetch({ 
     success: function (PersonCollection) { 
     var template = _.template($('#people-template').html(), {PersonCollection: PersonCollection.models}); 
     that.$el.html(template); 
     } 
    }) 
    } 
}); 

var GeneratePersonList = new PersonList(); 

I aimerait pouvoir éditer/mettre à jour un seul utilisateur. Quelle serait la meilleure façon de faire cela? Ce serait bien d'avoir un exemple de code. Merci

Répondre

0

Vous n'allez pas synchroniser les modifications apportées à vos modèles si vous les chargez à partir d'un fichier JSON plat. Si vous voulez éviter d'utiliser un serveur/db pour conserver vos données, je vous suggère d'utiliser le plugin Backbone LocalStorage, de charger des données factices dans le stockage local et de travailler avec vos modèles à partir de là.

est ici une idée très lâche de la façon dont vous le faire:

// model ... 

// (assuming you've loaded localStorage plugin on your page with underscore and backbone) 
var PersonCollection = Backbone.Collection.extend({ 
    model: Person, 
    localStorage: new Backbone.LocalStorage("PersonCollection"), // Unique name within your app. 
}); 

// view ... 

// "bootstrap" data in to localStorage, if it is not there already 
if (typeof localStorage["PersonCollection"] === 'undefined') { 
    // make ajax request, load your json into local storage 
    $.getJSON('users.json', function (data) { 
     localStorage['PersonCollection'] = data; 
     init(); 
    }); 
} else { 
    init(); 
} 

function init() { 
    var GeneratePersonList = new PersonList(); 
} 
+0

init() ne soit pas appelé. J'ai mis un console.log ('ici') et je peux voir cela dans la console mais init() ne fonctionne pas .. – Alex

+0

@Alex votre console vous dit autre chose à propos de la requête ajax? Je suppose que c'est un chemin ou un problème avec la façon dont vous desservez les fichiers. Utilisez-vous un serveur web? –

+0

c'est ce que j'ai jusqu'ici: http://jsfiddle.net/rUdTs/ J'utilise seulement mamp pour voir les fichiers car finalement j'utiliserai du php et je veux le tester localement .. – Alex

Questions connexes