Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Verständnisfrage Klassen und on()

    NEWS

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    Verständnisfrage Klassen und on()

    This topic has been deleted. Only users with topic management privileges can see it.
    • D
      da.phreak last edited by

      Hallo,

      ich komme grad nicht weiter. Ich will meine lose Script-Sammlung mal aufräumen und alles sauber in Klassen packen. Dabei wollte ich einen Schalter abstrahieren:

      class Switch{
          private nodeState:string;
      
          public get State():boolean {
              return getState(this.nodeState).val;
          }
      
          constructor(address:string) {
              this.nodeState = address + ".state";
              on(this.nodeState, this.OnStateChanged);
          }
      
          private OnStateChanged():void {
              log(this.nodeState + ": " + this.State);
          }
      }
      

      Das OnStateChanged ist wie man sieht erstmal nur ein log zum Testen. Alles was ich ausgegeben bekomme ist "undefined: undefined", sprich nodeState ist nicht gesetzt, obwohl vorher zugewiesen.

      Wenn ich außerhalb der Klasse sowas mache, funktioniert es:

      var sw:Switch= new Switch('zigbee....df1a');
      
      on('zigbee....df1a.state', OnStateChanged)
      
      function OnStateChanged() {
          log("# " + sw.State);
      }
      
      

      Kann mir jemand erklären, warum?

      1 Reply Last reply Reply Quote 0
      • N
        Nahasapee last edited by

        hi
        probiers mal mit

        ....
        on(this.nodeState, this.OnStateChanged.bind(this));
        .....
        

        gruß

        1 Reply Last reply Reply Quote 0
        • D
          da.phreak last edited by

          Vielen Dank, hat funktioniert.

          Gibt es irgendwo eine Erklärung dazu ... ich verstehe Sachen gern. So würde ich mir zusammenreimen, daß on() ohne bind irgendwie den Kontext nicht kennt, und so keine Zugriff auf Klassen-member hat.

          1 Reply Last reply Reply Quote 0
          • First post
            Last post

          Support us

          ioBroker
          Community Adapters
          Donate

          919
          Online

          31.9k
          Users

          80.2k
          Topics

          1.3m
          Posts

          javascript
          2
          3
          239
          Loading More Posts
          • Oldest to Newest
          • Newest to Oldest
          • Most Votes
          Reply
          • Reply as topic
          Log in to reply
          Community
          Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
          The ioBroker Community 2014-2023
          logo