0

解決策が必要なかなり簡単な問題があります。さまざまなオプションを試しましたが、良い結果は得られませんでした。私がやろうとしているのは、クラス内でテキストフィールドを追加し、javascript を介して値を入れることです。

たとえば、次のコードを取得しました。

Ext.define('project.view.viewexample', {
extend: 'Ext.Panel',
xtype: 'gps',

config: {
    styleHtmlContent: true, 
    scrollabe: 'vertical',
    title: 'GPS',
    tpl: ''
},
constructor: function() {
    this.getPosition();
},
getPosition: function() {
    var geo = Ext.create('Ext.util.Geolocation', {
        autoUpdate: false,
        listeners: {
            locationupdate: function(geo) {
                alert('New latitude: ' + geo.getLatitude());
            },
            locationerror: function(geo, bTimeout, bPermissionDenied, bLocationUnavailable, message) {
                if(bTimeout){
                    alert('Timeout occurred.');
                } else {
                    alert('Error occurred.');
                }
            }
        }
    });
    geo.updateLocation();
}
});

テキストフィールドを作成し、テキストフィールドを更新する緯度値を警告する代わりに、どうすればよいでしょうか。どうすればいいですか?

  1. 上記で使用した構造でテキストフィールドを作成するにはどうすればよいですか?
  2. javascriptから呼び出して変更する方法は?

前もって感謝します!この知識の上に座っている人に大きな信用を!

4

3 に答える 3

1

IMHO、テキストフィールドにメッセージを表示する代わりに、メッセージボックスの方が適切です。sencha のメッセージ ボックスを使用すると、見栄えも良くなります。したがって、 simple を使用する必要はありませんalert

あなたはこれを行うことができます..

Ext.Msg.alert('Error', 'Timeout has been occurred.', function(){
     // stuff to do when use clicks on Ok button. Can listen to location again.
});

これを に置き換えるだけalertです。

于 2013-03-26T09:59:13.480 に答える
0

コンストラクターで jQuery を使用してテキストフィールドを作成する

$("#form").append('Lat: <input id="latitude" type="text" name="latitude">');

テキストフィールドを更新

$("#form").find("#latitude").val(geo.getLatitude());

それだ :)

于 2013-03-26T09:40:03.240 に答える
0

書きたいものを作成するための多数の手段の 1 つを含む構造が整っていますが、それは空の文字列です。

このようなものが動作するはずです:

config: {
    styleHtmlContent: true, 
    scrollabe: 'vertical',
    title: 'GPS',
    lat: '',
    tpl: '<div class="lat">New latitude: {lat}</div>'
},
constructor: function() {
    this.getPosition();
},
getPosition: function() {
    var geo = Ext.create('Ext.util.Geolocation', {
        autoUpdate: false,
        listeners: {
            locationupdate: function(geo) {
                this.lat = geo.getLatitude();
            },

テンプレートのクラス (lat) は、css によるスタイリングの手段を提供します。

他の手段は、テキストボックス、タイトルバー、フローティングボックス、テキストなど、どのように表示したいかによって異なります。常にそこに表示したいですか、それとも新しい入力時にのみ表示したいですか?

「tpl」の代わりに、次のようにします。

items: [{
    xtype: 'label',
    html: '',
    itemId: 'latLabel'
}]

// listener updater:
panel.down('#latLabel').setHtml('New latitude: ' + geo.getLatitude());

あなたが求めているものを正確に作成する方法は他にもたくさんあります。Sencha Touch ライブラリには、特にニーズを満たす要素を作成および/または更新するためのツールが豊富にあります。

お役に立てれば。

于 2014-03-02T22:08:58.557 に答える