Bonjour,
Voila je suis en train de découvrir AngularJs et je voudrais créer un element qui m'affiche un spin de Spin.js
J'ai créé une directive Element comme ceci:
app.directive("spinner",function(){
return {
restrict: "E",
scope: {},
link: function(scope, element, attrs){
var spinner = new Spinner;
scope.$watch(attrs.spinOn, function(value) {
if(value == true){
spinner.spin(element);
}else{
spinner.stop();
}
});
scope.$watch(attrs.options, function (options) {
spinner.stop();
spinner = new Spinner(options);
spinner.spin(element);
}, true);
element.on('$destroy', function() {
spinner.stop();
});
}
}
});
Et dans mon HTML
<spinner spin-on="messageUpload"></spinner>
Je voudrais qu'un spinner de Spin.JS s'affiche dans mon element spinner
Absolument rien. Quand je tente à true
, le spin se lance mais ne s'affiche pas.
Et quand je tente avec une variable(messageUpload
par exemple), rien ne se passe.
Merci
Bonjour,
app.directive("spinner",function(){
return {
restrict: "E",
// on isole le scope (cad, que le scope de la directive est different de celui du controller)
scope: {
// on definit la variable spinOn comme etant une variable de type two-way binding
// nous allons donc interpreter la valeur de spinOn. (avec attrs.spinOn, on recupere le string de la valeur et non la valeur)
spinOn : '='
},
link: function(scope, element, attrs){
var spinner = new Spinner();
scope.$watch('spinOn', function(value) {
if(value === true){
// on veut le DOM de l'element mais Angular utilise soit jQuery, soit jQlite qui possede la meme API
// nous devons donc recupere le DOM element pour le spinner
spinner.spin(element[0]);
}else{
spinner.stop();
}
});
scope.$watch(attrs.options, function (options) {
spinner.stop();
spinner = new Spinner(options);
spinner.spin(element[0]);
}, true);
element.on('$destroy', function() {
spinner.stop();
});
}
}
});
Tu as mis des console.log voir si tu rentrais bien dans tes $watch ? La console ne donne rien ?