0
我對XTemplates和使用MVC結構有一些困難。我已經閱讀了一些教程,並且他們自己有意義,但是當我嘗試將它們應用於我正在嘗試完成的內容時,它並不能很好地工作。Sencha X模板問題來自控制器調用
首先,我的應用程序由TabBarMVC和幾個視圖組成。一些意見將有'子觀點'。我從「佈局」角度開發應用程序。製表符是標籤,視圖可以訪問子視圖。現在問題是發送數據到子視圖。
一個例子是我的Bill頁面到Detail頁面。在賬單頁面中,用戶可以輸入總數和人數來分割賬單。我的控制器接受兩個參數並將它們分開並將它們存儲在「賓客」對象中。我的賓客對象將是1-x個訪客對象的數組。 (根據要分割的數量)。
然後,我將該對象發送到我的子視圖中的更新方法來更新XTemplate,但沒有發生。我可以提醒對象,並在調試器中查看數據,但我不知道如何更新Xtemplate。
這裏是控制器代碼:
splitdetail: function(options)
{
if (! this.splitdetailView)
{
var totalBill = options.data['totalBill'];
var numGuests = options.data['splitBy'];
var totalPerGuest = totalBill/numGuests;
var guestObject = new Array();
var theGuest;
for (var i=0; i<numGuests; i++) {
theGuest = {amount: totalPerGuest}
guestObject.push(theGuest);
}
app.views.calculatorSplitDetail.updateWithRecord(guestObject);
this.splitdetailView = this.render({
xtype: 'CalculatorSplitDetail',
switchAnimation: { type: 'slide'}
});
}
this.application.viewport.setActiveItem(this.splitdetailView, 'slide');
},
,這裏是我的拆分細節
var guestTemplate = new Ext.XTemplate(
'<tpl for=".">',
'<div class=" x-field guest-amount-row x-field-number x-label-align-left">',
'<div class="x-form-label" style="width: 30%; ">',
'<span>Total bill</span>',
'</div>',
'<div class="x-form-field-container">',
'<input type="number" name="totalGuestAmount" class="x-input-number" value="{amount}">',
'</div>',
'</div>',
'</tpl>'
);
app.views.CalculatorSplitDetail = Ext.extend(Ext.form.FormPanel, {
initComponent: function() {
Ext.apply(this, {
scroll: false,
items: [
guestTemplate,
]
});
app.views.CalculatorSplitDetail.superclass.initComponent.call(this);
},
styleHtmlContent: true,
baseCls: 'calculator-splitdetail-panel',
updateWithRecord: function(record) {
guestTemplate.apply(record);
alert(record[0].amount);
}
});
Ext.reg('CalculatorSplitDetail', app.views.CalculatorSplitDetail);
謝謝。我會嘗試。 – jdruid