3

こんにちは、sencha touch 2 を使用していますが、Ext.XTemplate に問題があります。

次のテンプレートを使用すると、正しく機能します。

var template = new Ext.XTemplate(
    '<div title="{currentLocation:this.tr}">',
        '<img src="styles/css/img/locate.png" height="30px" width="30px" />',
    '</div>',
    {
        compiled: true,
        tr: function(value) {
            return 'translated ' + value;
        }
    }
);

template.apply({currentLoaction: 'Current location'});

<div title="Current Location">
    <img src="styles/css/img/locate.png" height="30px" width="30px" />
</div>

しかし、テンプレートに変数を設定することを好み'Current location'ますが、正しく機能しません ({\'Current location\':this.tr}空の値を返す):

var template = new Ext.XTemplate(
    '<div title="{\'Current location\':this.tr}">',
        '<img src="styles/css/img/locate.png" height="30px" width="30px" />',
    '</div>',
    {
        compiled: true,
        tr: function(value) {
            return 'translated ' + value;
        }
    }
);

template.apply();

<div title="">
    <img src="styles/css/img/locate.png" height="30px" width="30px" />
</div>

this.tr(currentLocation)and のthis.tr(\'Current location\')代わりにcurrentLocation:this.trand を使用しようとしましたが、どちらの場合も\'Current location\':this.trテンプレートが返されます。<div title="

私が間違っていることと、問題を解決する方法を誰かが説明できますか?

4

1 に答える 1

3

角括弧で囲まれている場合、任意のコードを実行できます。 Ext.XTemplateを参照してください。あなたの例では:

var template = new Ext.XTemplate(
    '<div title="{[this.tr(\'Current location\')]}">',
        '<img src="styles/css/img/locate.png" height="30px" width="30px" />',
    '</div>',
    {
        compiled: true,
        tr: function(value) {
            return 'translated [' + value + ']';
        }
    }
);

document.write(template.apply());
于 2012-04-22T18:45:25.687 に答える