Bienvenue sur IndexError.

Ici vous pouvez poser des questions sur Python et le Framework Django.

Mais aussi sur les technos front comme React, Angular, Typescript et Javascript en général.

Consultez la FAQ pour améliorer vos chances d'avoir des réponses à vos questions.

knockout.js + Brython : exemple bugué

+1 vote

Voici un lien montrant comment utiliser knockout.js avec brython.

http://alexstroubleshooting.blogspot.com.es/2013/11/two-way-data-binding-in-brython.html

Le lien comprend 2 fichiers : index.html et exvg.py dont les codes sources figurent sur le lien.
J'y ajoute les fichiers+repertoires nécessaires à Brython ainsi que la dernière version de knockout.js.

Pourtant ça ne marche pas dans le navigateur firefox quand je clique index.html ( pas d' interactivité) et quand je lance exvg.py dans la console j' obtiens NameError 'ko' not defined.

Je comprend l' erreur , mais malgré mes bidouilles, je ne parvient pas à le corriger.

class Point:  
    def init(self): 
        self.x = ko.observable(100) 
        self.y = ko.observable(50)

        # This is a little funky:  
        self.mouseDown = lambda data, event : self._mouseDown(event)  

    def _mouseDown(self, event): 
        # I want to drag relative to the parent SVG element 
        containerRect = event.target.parent.getBoundingClientRect() 
        startX = containerRect.left 
        startY = containerRect.top

    def mouseMove(event):  
        self.x(event.clientX-startX)  
        self.y(event.clientY-startY)  

    def mouseUp(event):  
        # In theory I should unbind the specific function, but brython  
        # chokes when I try to unbind mouseUp from mouseup  
        doc.unbind('mouseup')  
        doc.unbind('mousemove')  

        # I override other events until we're done dragging  
        event.preventDefault()  
        doc.bind('mousemove',mouseMove)  
        doc.bind('mouseup',mouseUp)  

ko.applyBindings(Point())
demandé 5-Fev-2015 par buffalo974 (2,542 points)
edité 5-Fev-2015 par max

Poste ton code qu'on puisse voir exactement ce que tu as fait.

Edit: J'ai copié le code que tu as fournit en commentaire.

Poste ton fichier html (même si c'est le même, mais soit bien certain de copier le tient). Et précises si tu utilises un serveur web pour tes tests (si oui, file la config, si non, essaye avec python simple server).

techno intéressante, mais je n'ai pas réussi non plus à faire marcher l'exemple.
La seule différence que j'avais était dans le numéro de version de knockout, 3.2 au lieu de 3.0...

Poste le HTML.

1 Réponse

+1 vote
 
Meilleure réponse

Le code source est dispo ici: http://sci.utah.edu/~abigelow/Files/brythonKnockoutDemo/
et fonctionne sans problème. Tu dois avoir eu une erreur de copier/coller.

J'ai créé une archive dispo ici: http://www.filedropper.com/brythonknockoutdemo

répondu 2-Fev-2016 par c0da (2,746 points)
sélectionné 2-Fev-2016 par buffalo974
...