实际上我正在创建我的第一个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”。
任何想法? 谢谢!!
答案 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
方法中执行此操作)以访问控制器。