Can you trigger action/events in Sencha Touch from html elements?

后端 未结 2 1781
误落风尘
误落风尘 2021-01-03 03:38

I have a Sencha tab panel, each tab loads html content via ajax. One of the components is a post/list that visitors can use to drill down once more to read the entire post.

相关标签:
2条回答
  • 2021-01-03 04:30

    The solution for 2.2.1:

    initialize: function() {
        this.element.on({
            tap: <function>,
            delegate: <query_expression>
        });
    
        this.callParent(arguments);
    }
    

    <query_expression> can be anything fitting in to Ext.query() too.

    0 讨论(0)
  • 2021-01-03 04:34

    You can add listeners to elements within your HTML which would then be able to trigger the view switch. For example,

    // simple HTML snippet contained in Panel
    <a class="my-link">Click Me!</a>
    
    // on after load/after render (need to ensure that the elements exists in the page!)
    
    // get reference to the containing panel (tab)
    var panel = this.items.get(0);
    
    panel.getEl().on({
       tap: function(e){
          console.log('i was clicked!');
       },
       delegate: 'a.my-link'
    });
    

    The delegate option allows you to pass a selector that means the event will only fire when an element matching that selector is in the event target's chain (i.e. returns something in an e.getTarget(delegate) call).

    EDIT You can access attributes of the tapped element using either the DOM node tapped or use Ext.fly to wrap an Ext.Element instance around it and use the helper methods.

    console.log(e.getTarget('a.my-link')); // logs DOM node
    console.log(Ext.fly(e.getTarget('a.my-link'))); // logs Ext.Element wrapping DOM node
    
    console.log(e.getTarget('a.my-link').href); // logs href via DOM node property
    console.log(Ext.fly(e.getTarget('a.my-link')).getAttribute('href')); // logs href via Ext.Element getAttribute() method
    

    Depending on the nesting you may be able to remove the selector from the getTarget() call (i.e. if you're always tapping on the element your listening on then you can remove it, but if there are children in the element you're listening on then you will need it. In the second case the 'target' will be the child that the event bubbled from so the href etc will be wrong. If that makes sense... :) )

    0 讨论(0)
提交回复
热议问题