2010-06-22 3 views
1

Je veux essayer de comprendre l'utilisation de ces constructions parce que je ne le fais pas.pourquoi est-il un appel à une fonction dans une variable dans un plugin jquery

Si je vois cela dans un plugin

function configuration(user_settings) { 
    //Override the default settings with the user settings 
defaults = { 
time_in_seconds: 3600, 
time_format: 'ss', 
tick: function(timer, time_in_seconds, formatted_time) {}, 
buzzer: function(timer) {}, 
autostart: true 
    }; 
    return $.extend(defaults, user_settings); 

}

La tique est appelée dans le plug-in et le paramétrage des valeurs mais quand je commente ces lignes hors, tout fonctionne encore.

Quelle est l'idée générale sous-jacente. Je regardais les github page, mais il n'y a pas d'explication

EDIT

Si le plugin itère, il est le réglage des paramètres de tiques

settings.tick(timer, current_time, formatted_time); 

Comment puis-je mettre un user_setting pour tick , qui utilise encore ces paramètres? En d'autres termes, obtenir quelque chose entre ces parenthèses d'exécution {}. J'ai fait un peu plus de tests et apparemment il est possible de passer n'importe quel nombre de paramètres à n'importe quel moment. Juste pas quelque chose comme

$("#countdown_update").createTimer({time_in_seconds: (delay? delay/1000 : minTimeBetweenUpdates/1000), 
     tick:function(one,two){$('#test').html('test '+one+two);}}); 

Il vous donnera l'objet de la minuterie et les time_in_seconds dans la sortie

Merci, Richard

+0

Quelles lignes commentez-vous? Et à quoi ressemble le code que vous avez écrit pour l'utiliser? –

+0

Ceux avec cocher dedans. $ ("# countdown_update"). CreateTimer ({time_in_seconds: 30}); – Richard

Répondre

2

Vous supprimez la valeur par défaut de la fonction "tick" lorsque vous la commentez. Cela fonctionne probablement encore parce que le code est assez intelligent pour ne pas utiliser la fonction si elle n'a pas de valeur.

La fonction de graduation est appelée à chaque fois que le temporisateur itère. La valeur par défaut représentée ici est une fonction vide, donc elle ne va rien faire, mais vous pouvez remplacer tick par une fonction qui fait quelque chose (par exemple, faire apparaître une alerte à chaque fois, juste pour la voir fonctionner) .

+0

Donc, ce sont des fonctions de rappel? et les variables sont définies dans l'itération. Je peux comprendre cela. Comment puis-je lui donner quelque chose à faire dans les {} crochets? Parce que je peux comprendre passer une instruction complète comme: function() {faire quelque chose}, mais alors je ne peux pas utiliser les variables qui sont en cours de définition dans l'itération? J'espère que cela a du sens. – Richard

+1

Vous venez d'ajouter la clé et la valeur suivantes: $ ("# compte à rebours"). CreateTimer ({time_in_seconds: 30, tick: function() {alert ("HI!");}); – Mervyn

+0

Ou est l'idée à l'origine de faire un réglage utilisateur comme ceci $ ("# countdown_update"). CreateTimer ({time_in_seconds: 30, cochez: function (one, two, three {dosomething})}) où les paramètres sont juste fausses valeurs, car les valeurs réelles sont définies dans l'itération comme ceci .-> settings.tick (timer, current_time, formatted_time); – Richard

4

Il très probablement fonctionne toujours parce que le plug-in a des valeurs par défaut attribuées dans le code déjà. En commentant vos lignes, le plugin revient à la configuration par défaut.

+0

ok, mais pourriez-vous peut-être fournir une explication pourquoi cela est fait. À quoi cela sert-il? – Richard

+0

Les valeurs par défaut sont pratiques. Au lieu de demander à l'utilisateur de définir toutes les options, le concepteur de plugin par défaut les valeurs de quelques options communes. Vous êtes libre de les remplacer. –

+0

@ SimpleCoder, j'ai édité ma question – Richard

2

Ce code étend l'objet par défaut avec les paramètres user_settings. Ainsi, les paramètres user_settings remplaceront toutes les propriétés nommées similaires dans l'objet par défaut. Cependant, si l'une des propriétés par défaut n'existe pas dans l'objet user_settings, ces propriétés seront ajoutées à l'objet user_settings et renvoyées à l'appelant (en tant que nouvel objet).

+0

Merci, je ne m'explique pas très bien. Je comprends le réglage des variables, mais je n'obtiens pas de réglage en tant que paramètre utilisateur. Comment le définissez-vous. Pourquoi dans la variable une fonction? Est-ce une sorte de rappel automatique. C'est pareil avec le buzzer! – Richard

Questions connexes