2013-05-10 74 views
15

任何人都可以請我指出一個在ExtJS中關聯的實例(hasMany和belongsTo)。請不要點我煎茶文檔或與煎茶任何例子,因爲我試過幾乎所有的東西,但沒有人的作品...協會在extjs 4.2中的示例:

回答

9

運行示例(打開你的瀏覽器控制檯):

http://jsfiddle.net/4TSDu/52/

Ext.define('My.model.Author', { 
    extend:'Ext.data.Model', 
    fields:[ 
     'name' 
    ] 
}); 

Ext.define('My.model.Comment', { 
    extend:'Ext.data.Model', 
    fields:[ 
     'emailAddress', 
     'body' 
    ] 
}); 

Ext.define('My.model.BlogPost', { 
    extend:'Ext.data.Model', 
    fields:[ 
     'title', 
     'body' 
    ], 
    belongsTo:[ 
     { 
      name:'author', 
      instanceName:'author', 
      model:'My.model.Author', 
      getterName:'getAuthor', 
      setterName:'setAuthor', 
      associationKey:'author' 
     } 
    ], 
    hasMany:[ 
     { 
      name:'comments', 
      model:'My.model.Comment', 
      associationKey:'comments' 
     } 
    ], 
    proxy:{ 
     type:'ajax', 
     url:'https://dl.dropboxusercontent.com/u/1015920/Ext/blog-posts.json', 
     reader:{ 
      type:'json', 
      root:'data' 
     } 
    } 
}); 

My.model.BlogPost.load(1, { 

    success:function(record, operation){ 

     console.log(record.get('title')); // "some title" 

     console.log(record.getAuthor().get('name')); // "neil" 

     console.log(record.comments().getCount()); // 2 

    } 
}); 

在這裏閱讀更多:

http://extjs-tutorials.blogspot.ca/2012/05/extjs-belongsto-association-rules.html

http://extjs-tutorials.blogspot.ca/2012/05/extjs-hasmany-relationships-rules.html

使用的樣品數據:

{ 
    "data": [ 
     { 
      "id": 1, 
      "title": "some title", 
      "body": "some body", 
      "author": {"id":1, "name": "neil"}, 
      "comments": [ 
       { 
        "id":55, 
        "emailAddress": "[email protected]", 
        "body": "test comment" 
       }, 
       { 
        "id":66, 
        "emailAddress": "[email protected]", 
        "body": "another comment" 
       } 
      ] 
     } 
    ] 
} 
+0

喜尼爾,對不起,在我的響應延遲。我試圖運行這個,但無法在控制檯中獲得任何輸出。我把整個代碼放在一個onReady函數中,用你提到的數據創建了一個json文件。數據正在被抓取(檢查螢火蟲控制檯),但它似乎並沒有被稱爲成功功能。而且我無法看到您提供的jsFiddle中的任何控制檯輸出。你能不能讓我知道,如果我在這裏做錯了什麼... – CARTIC 2013-05-14 14:44:52

+0

測試/在鉻,火狐和Safari的作品。我正在使用遠程數據,因此無法在IE中工作(儘管可能在IE10中)。你正在使用? – 2013-05-14 17:59:21

+0

嗨尼爾,我試着用firefox 20.0.1,chrome 26.0和IE 8.我發現json文件本身並沒有在jsFiddle中獲取,這是由於防火牆和安全設置(公司策略)。有沒有辦法在JsFiddle中內聯添加數據。另外,請讓我知道,如果我試圖從eclipse運行示例的方式是正確的(它在我以前的評論中)。在那裏我能夠獲得json數據,但成功函數從未被調用過。我試圖用firefox 20安裝螢火蟲... – CARTIC 2013-05-15 04:23:00