這裏是一個兩部分問題。第一個是關於Sencha如何解析JSON並讀取商店的技術問題。嵌套的JSON和與Sencha Touch的關聯
我有兩個型號,訂單和用戶:
Ext.regModel('Order', {
fields: [
{name: 'id', type: 'int'},
{name: 'user_id', type: 'int'},
{name: 'name', type: 'string'},
{name: 'price', type: 'float'},
],
belongsTo: 'User'
});
Ext.regModel('User',{
fields: [
{name: 'id', type: 'int'},
{name: 'first_name', type: 'string'},
{name: 'last_name', type: 'string'},
{name: 'email', type: 'string'},
],
associations:[
{type: 'hasMany', model: 'Order', name: 'orders'}
]
});
總體而言,一個非常簡單的關聯。我有一個從服務器中檢索以下JSON:
[
{
"id":22,
"price":0.0,
"name":"My First Order",
"user_id":3,
"user": {
"id": 3,
"first_name": "Michael",
"last_name": "Jones",
"email": "[email protected]"
}
}
]
最後,這裏是我的商店:
var o = new Ext.data.Store({
model: "Order",
sorters: "name",
getGroupString: function(record){
return record.get('name')[0]
},
proxy: {
type: 'ajax',
url: '/orders',
headers: {'Accept': 'application/json'},
reader: {
type: 'json'
}
},
autoLoad: true
});
Ext.regStore("Orders",o);
當我看到訂單數據,我無法找到該用戶的任何提及。因此,我在Sencha文檔中找到了這個方便的指南:http://dev.sencha.com/deploy/touch/docs/?class=Ext.data.Reader
但是,文檔僅顯示hasMany關聯的示例 - 它不包含從belongsTo關聯中提取數據的一個示例。我試圖在網上搜索幾個小時,然後空手而去。從訂單字段中檢索用戶字段的正確方法是什麼?
更新:我在我的商店移除代理和自動加載參數和數據參數,其中載有我的服務器在我的例子返回的JSON的完全相同的字符串替換它。你猜怎麼着?有效。但是,我仍然需要解決這個問題,以便它能在與我的服務器通信時工作!有任何想法嗎?
第二部分:您對Sencha Touch有什麼想法?該框架似乎非常強大,但文檔和示例似乎相當薄弱。我也擔心解析這些數據的困難程度如何。那裏有更好的選擇嗎?
感謝您的幫助。使用簡單的Ext.Ajax.request對象並將數據加載到商店中效果很好。我擔心我是否按照預期使用了這些工具,但我猜無論什麼作品都適用。感謝您對Sencha Touch平臺的反饋。我很欣賞這個平臺的類似特質。我認爲處理這個數據加載問題只是令人沮喪,因爲它看起來像我一切正常。如果修復引起其他一些問題,我會回信。 –