Hybrid View

  1. #1
    Sencha User KJedi's Avatar
    Join Date
    Feb 2008
    Location
    Ukraine, Mykolayiv
    Posts
    129
    Vote Rating
    0
    KJedi is an unknown quantity at this point

      0  

    Question Using member functions to render the complex content

    Using member functions to render the complex content


    I need a component that shows info about offer. The best way i can thin of is to subclass the panel, create a template and set data for the panel. I achieved all that, but the template is not working as I'd like it to:
    Code:
    new Ext.XTemplate(
    	'<img src="{this.getImageUrl(images)}" width="120" height="120" />',
    	'<div>',
    		'<strong>€ {this.formatPrice(price)}</strong>',
    		'<span class="name">{name}</span>',
    		'<p>{description}</p>',
    	'</div>',
    	'<div class="info">',
    		'<span class="type">{this.renderType(isOffer, isPrivate)}</span>',
    		'<span class="type">{this.renderDistance(distance)}</span>',
    	'</div>', {
    		getImageUrl: function (images) {
    			return CJ.constants.DEFAULT_DEAL_IMAGE;
    		},
    		formatPrice: function (price) {
    			return price;
    		},
    		renderType: function (isOffer, isPrivate) {
    			if (isPrivate == 'false') {
    				return CJ.t('Business deal')
    			}
    			if (isOffer == 'true') {
    				return CJ.t('Offer');
    			}
    			return CJ.t('Search');
    		},
    		renderDistance: function (dist) {
    			return (dist - 0) + 'm';
    		}
    	})
    However it does not understand that I actually want to call a member function, not get the value if this.something variable.

    Is there a way to make it work as I want it to?

  2. #2
    Sencha - Senior Forum Manager mitchellsimoens's Avatar
    Join Date
    Mar 2007
    Location
    St. Louis, MO
    Posts
    34,107
    Vote Rating
    453
    mitchellsimoens has much to be proud of mitchellsimoens has much to be proud of mitchellsimoens has much to be proud of mitchellsimoens has much to be proud of mitchellsimoens has much to be proud of mitchellsimoens has much to be proud of mitchellsimoens has much to be proud of mitchellsimoens has much to be proud of mitchellsimoens has much to be proud of mitchellsimoens has much to be proud of

      0  

    Default


    You need to surround it with square brackets:

    Code:
    {[this.renderType(isOffer, isPrivate)]}
    Mitchell Simoens @SenchaMitch
    Sencha Inc, Senior Forum Manager
    ________________
    http://www.JSONPLint.com - Source to lint your JSONP!

    Check out my GitHub, lots of nice things for Ext JS 4 and Sencha Touch 2
    https://github.com/mitchellsimoens

    Think my support is good? Get more personalized support via a support subscription. https://www.sencha.com/store/

    Need more help with your app? Hire Sencha Services services@sencha.com

    Want to learn Sencha Touch 2? Check out Sencha Touch in Action that is almost in print!

    When posting code, please use BBCode's CODE tags.

  3. #3
    Sencha User KJedi's Avatar
    Join Date
    Feb 2008
    Location
    Ukraine, Mykolayiv
    Posts
    129
    Vote Rating
    0
    KJedi is an unknown quantity at this point

      0  

    Default


    Is there any official documentation where I can see these options?
    I read everything about XTemplate, but did not find that.
    Also there is a problem in the code above. If you're passing values as parameter, you should use
    Code:
    {[this.renderType(values.isOffer, values.isPrivate)]}
    instead of
    Code:
    {[this.renderType(isOffer, isPrivate)]}