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

恕我直言,而不是在文本字段中显示消息,消息框会更合适。如果你使用 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

您已经有了适当的结构,包括创建您想要编写的内容的多种方法之一 - 但它是一个空字符串。

像这样的东西应该工作:

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 回答
0

在构造函数中使用 jQuery 创建文本字段

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

更新文本字段

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

这就对了 :)

于 2013-03-26T09:40:03.240 回答