Original Questionfonction objet Javascript appelant une autre fonction dans l'objet, Rails
ne peux pas comprendre pourquoi je ne peux pas appeler la deuxième fonction dans cette première fonction. J'utilise jQuery-turbolinks. (En outre, si vous connaissez un meilleur moyen d'exécuter javascript spécifique à la page dans les rails, laissez-moi savoir.) Actuellement, c'est ma meilleure implémentation où je vérifie si le corps a une certaine classe, et si c'est le cas, je cours la fonction init dans cet objet javascript).
app/assets/JavaScripts/blogs.js
$(document).ready(function(){
var blogsjs = {
myBlog: this,
init: function(){
alert("hello from blogs");
$("input").on('click', function(){
$(this).hide('slow', function(){
myBlog.another();
});
});
},
another: function(){
alert("I was called!")
}
};
if($('body').hasClass("blogs") == true){
blogsjs.init();
}
});
Solution Après commentaires
tout simplement utilisé object.method()
syntaxe à partir d'une méthode pour appeler une autre méthode dans ce même objet :
$(document).ready(function(){
var blogsjs = {
init: function(){
alert("hello from blogs");
$("input").on('click', function(){
$(this).hide('slow', function(){
blogsjs.another();
});
});
},
another: function(){
alert("I was called!");
blogsjs.yetanother();
},
yetanother: function(){
alert("yet another called");
}
};
blogsjs.init();
});
Je n'aime pas à quel point ce code est désordonné, mais l'encapsulation bénéficie d'un design orienté objet, je pense, est solide: le javascript de chaque ressource n'a accès qu'aux méthodes de son objet javascript.