Как передать параметры контроллеру ExtJS из Ext.application - PullRequest
1 голос
/ 26 августа 2011

На самом деле я создаю свое первое 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 мой контроллер должен знать ajaxUrl, исходящий из Liferay 6. В 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 Ответ

1 голос
/ 26 августа 2011

Концепция передачи переменной из приложения в контроллер мне кажется неправильной. Вместо этого я бы создал getter где-нибудь в конфигурации вашего приложения

Ext.application({
  // ...

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

  // ...
});

И затем вы можете get это из контроллера, используя:

this.application.getContext()

Но если вы хотите использовать метод передачи переменной в контроллер, вы всегда можете использовать yourApp.getController("Rate") (вы можете сделать это в вашем lounch методе) для доступа к контроллеру.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...