2

我在 extjs4 工作。我正在研究天气模块。我在控制器代码的帮助下检索天气信息 -

getWeather : function() {
        var getdata=this.getipaddress();
        console.log(getdata);
        var city = "pune";
        var urllink="http://api.wunderground.com/api/4ab310c7d75542f3/geolookup/conditions/q/IA/" + city + ".json";
        console.log(urllink);
        Ext.require('Ext.data.JsonP', function() {
            Ext.data.JsonP.request({
                //url : "http://api.wunderground.com/api/4ab310c7d75542f3/geolookup/conditions/q/IA/pune.json",
                url:urllink,
                success : function(parsed_json) {
                    var location = parsed_json['location']['city'];
                    var temp_c = parsed_json['current_observation']['temperature_string'];
                    alert("Current temperature in " + location + " is: "
                            + temp_c);
                            return temp_c;

                var viewObj=Ext.create('Balaee.view.sn.user.weather');
                var viewObj.show();
                }
            });
        });
    },

现在我想在视图中显示这个 temp_c 变量的值和城市。我直接拥有这两个变量。我没有任何与之相关的商店。假设我的看法是-

Ext.define('Balaee.view.sn.user.weather',
{
        extend:'Ext.view.View',
        id:'weatherId',
        alias:'widget.weatherView',
        config:
        {
            tpl:'<tpl for=".">'+
                '<div id="main">'+
                '</br>'+                    
                '<b>City :- </b> {city} </br>'+
                '<b>Temp:- </b> {temp_c} </br>'+

                '</div>'+
                '</tpl>',
            itemSelector:'div.main',}

}); 但上面的视图没有显示任何值。那么如何在视图中显示这些变量呢?

4

1 回答 1

2

您可以使用 Ext.container.Container 渲染模板(如果您没有商店,则不需要 Ext.view.View)这是您案例的示例:

Ext.define('Balaee.view.sn.user.weather',{
   extends:'Ext.container.Container',
   alias:'widget.weatherView',
   tpl:Ext.create('Ext.XTemplate',
        '<div id="main"></br>',
          '<b>City :- </b> {city} </br>',
          '<b>Temp:- </b> {temp_c} </br>',
        '</div>')
});

然后 Ajax 响应可以像下面这样调用它:

var viewObj=Ext.create('Balaee.view.sn.user.weather',{
   renderTo:'IdOfYourRenderingArea' // Or it can be Ext.getBody()
});
viewObj.update({city:location, temp_c:temp_c});

如果你想用数据视图渲染,那么你需要存储和模型。

于 2013-04-23T08:33:01.883 回答