如何从Ext.application为ExtJS控制器提供参数

时间:2011-08-26 07:42:05

标签: ajax model-view-controller extjs controller

实际上我正在创建我的第一个ExtJS 4 MVC应用程序。按照文档中的应用指南,我将控制器初始化为:

Ext.application({
name: 'RateManagement',

appFolder: 'softcom',

context: null,

constructor: function(context) {
    this.context = context;
},

launch: function() {
    Ext.create('Ext.Panel', {
        layout: 'fit',
        renderTo: 'rate-management',
        items: [
            {
                xtype : 'ratelist'
            },
            {
                xtype : 'rateedit'
            }
        ]
    });
},

controllers: [
              'Rate'
          ],

});

但是对于未来的ajax调用,我的控制器需要知道来自Liferay 6的ajaxUrl。在Liferay中,我可以得到这样的URL:

<portlet:resourceURL var="listRates" escapeXml="false" id="listRates"></portlet:resourceURL>
<script type="text/javascript">
    var rateContext = {
        contextPath: '<%=request.getContextPath()%>',
        listRatesUrl : '${listRates}',
        strings: strings
    };
</script>

我的想法是将var rateContext传递给我的控制器“Rate”。

任何想法? 谢谢!!

1 个答案:

答案 0 :(得分:1)

将变量从app传递给控制器​​的概念对我来说是错误的。相反,我会在你的应用程序配置中的某个地方创建getter

Ext.application({
  // ...

  context: null,
  getContext: function() {
    return this.context;
  },
  constructor: function(context) {
    this.context = context;
  },

  // ...
});

然后您可以使用以下方式get来自控制器:

this.application.getContext()

但是如果你想使用将变量传递给控制器​​的方法,你总是可以使用 yourApp.getController("Rate")(您可以在lounch方法中执行此操作)以访问控制器。