2017-12-19 3 views
1

Zunächst einmal zu betonen: Ich benutze Sencha modernen.
Nun folgende Ansicht betrachten:Sencha moderne Anwendung Viewcontroller nicht verbindlich aufgerufen werden?

Ext.define('myApplication.view.main.OrderView', { 
    extend: 'Ext.Container', 
    xtype: 'ordercontainer', 
    controller: 'order', 

    requires: [ 
     'Ext.MessageBox', 
     'Ext.layout.Fit' 
    ], 

    viewModel: 'main', 

    defaults: { 
     tab: { 
      iconAlign: 'top' 
     }, 
     flex: 1 
    }, 

    layout: 'vbox', 

    items: [ 
     { 
      xtype: 'button', 
      text: 'test, to be updated', 
      height: 30, 
      flex: 0, 
      listeners: { 
       click: 'onClick' 
      } 
     }, 
    ] 
}); 

Mit dem entsprechenden Controller:

Ext.define('myApplication.view.main.OrderController', { 
    extend: 'Ext.app.ViewController', 

    alias: 'controller.order', 

    onClick: function() { 
     debugger; 
     alert('onClick'); 
    } 
}); 

jetzt kann ich den Knopf sehen, wenn die Seite geladen wird. Ich erwarte, dass die onClick-Funktion aufgerufen wird (gemäß guide). Es ist jedoch nicht. Ich sehe keine Warnung und wird auch nicht (wenn die Entwicklungskonsole in Chrome geöffnet ist) den Debugger anhalten.

Wenn ich die Taste ändern, um ein handle zu verwenden und Code-Behind zu verwenden, funktioniert es. Der View-Controller funktioniert jedoch nicht. Das sollte nicht scheitern oder? Oder bin ich wieder einmal in die Falle gelaufen, einen Guide für Klassiker zu benutzen?

Antwort

0

Es ist, weil in Moderne die components nicht Veranstaltung hat click aber tap

So Ihr Code ändern wie folgt aus:

items: [ 
    { 
     xtype: 'button', 
     text: 'test, to be updated', 
     height: 30, 
     flex: 0, 
     listeners: { 
      tap: 'onClick' 
     } 
    }, 
] 
Verwandte Themen