ExtJs 控制器用数据调用视图

Posted

技术标签:

【中文标题】ExtJs 控制器用数据调用视图【英文标题】:ExtJs Controller calls view with data 【发布时间】:2014-10-07 14:30:39 【问题描述】:

我正在尝试从 AJAX 调用中调用视图,该调用编写在控制器中,同时发送存储在模型中的数据。

这是电话:

var dummyAttivita = Ext.create('appTrial.model.Attivita', 
   id: 1,
   nomeAttivita :  'il Chiosco',
   codiceAttivita: 'ago123'
);
.
.
.

doLogin: function() 
    // called whenever the Login button is tapped
    var codAttivita = Ext.getCmp('codAttivita').getValue();
    if( codAttivita != null || codAttivita !== undefined ) 
        if (codAttivita.length > 0) 
            if (codAttivita === dummyAttivita.get('codiceAttivita')) 
                Ext.Msg.alert('', 'entro', Ext.emptyFn);
                var attivitaAssociata = Ext.encode(dummyAttivita.getFields);
                Ext.Ajax.request(
                    url : 'app/view/Postazione.js/',
                    method:'POST',
                    params,: attivitaAssociata : dummyAttivita.getFields
                    scope : this,

                    success : function(response, opts)
                      //What should I put here???
                    ,
                    //method to call when the request is a failure
                    failure : function(response, opts)
                        Ext.Msg.alert('', 'Nothing', Ext.emptyFn);
                    
                );

             else 
                Ext.Msg.alert('', 'Il codice inserito non è associato ad alcuna attivita', Ext.emptyFn);
            
         else 
            Ext.Msg.alert('', 'Inserisci il codice di una attivita', Ext.emptyFn);
        
    
,

我不明白的是如何加载在 url 参数中指定的新视图,同时发送存储在参数中的数据。 有人知道吗?

提前致谢

以前

【问题讨论】:

那个视图是什么(表单面板、标签面板或容器),它包含什么? 目前是一个简单的容器,只有html文本;我必须用调用和调用视图更新帖子吗? 【参考方案1】:

这应该可以解决问题

success : function(response)
    var returnJson = JSON.parse(response.responseText);

    // either work with a store or save the data somewhere else
    Ext.getStore('MyStore').add(returnJson);
    // or you use your model (if data.is the base path inside the Json
    dummyAttivita.set(returnJson.data);

    // Here you add a route (should be inside the view controller
    MyApp.app.redirectTo('newView');

    // alternative to Ext.getStore() is to use a tpl for the view
    newView.setData(returnJson);
,

【讨论】:

行:"var returnJson = JSON.parse(response.responseText); 给我错误:“Uncaught SyntaxError: Unexpected token E 您的回复看起来如何。你能把它写到你的帖子里吗? 它包含定义在 ajax 调用的 url 属性中的模型:"response.responseText: "Ext.define('appTrial.model.Attivita'.." 请。你能否请一个演示回调,以便我可以看到结果。返回的 responseText 可能不是有效的 JSON。但需要看到这一点。 抱歉,Proto,感谢您的帮助,但目前我只是使用 Ext.Viewport.setActiveItem 解决了这个问题,以便加载新的蒙版。我很快就会面对它,我会带着 JSON 回来。非常感谢:)【参考方案2】:

然后你可以像下面这样编写你的成功函数。

  success : function(response, opts)
       Ext.getCmp('container_id').setHtml(Ext.decode(response.responseText));
  ,

【讨论】:

不工作,但可能我没有正确解释:我有一个视图,Login.js,有一个名为 loginContainer 的容器。上面的 Ajax 调用位于 Login.js 调用的控制器内部。现在,在 AJAX 调用的 onSuccess 上,我将调用 Postazione.js,定义在由 postazioneContainer 进行的 ajax 调用的 url 上,位于登录视图的位置。

以上是关于ExtJs 控制器用数据调用视图的主要内容,如果未能解决你的问题,请参考以下文章

Extjs 7,如何使用视图模型将动态数据从一个控制器传递到另一个控制器

如何通过控制器在 ExtJS4 中重新加载视图?

在控制器 ExtJS 中定义监听器

ExtJS 4 MVC - 如何仅加载当前控制器及其相关数据?

ExtJs 4 从另一个控制器同步调用函数

如何在 extjs4 中的特定事件调用上动态加载控制器?