2013-05-10 14 views
15

Czy ktokolwiek może wskazać mi przykład działania asocjacji (z hasMany i belongsTo) w ExtJS. Proszę nie wskaż mnie docs Sencha lub jakichkolwiek przykładów związanych Sencha bo próbowałem prawie wszystko, ale żaden z nich nie działa ...Próbka asocjacyjna w extjs 4.2:

Odpowiedz

9

Running próbki (włączyć konsoli przeglądarki):

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 

    } 
}); 

Czytaj więcej tutaj:

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

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

Dane Przykładowe zastosowanie:

{ 
    "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

Cześć Neil, przepraszam za opóźnienie w mojej odpowiedzi. Próbowałem uruchomić to, ale nie mogłem uzyskać żadnych danych wyjściowych w konsoli. Umieściłem cały kod w funkcji onReady, utworzyłem plik json z danymi, o których wspomniałeś. Trwa pobieranie danych (sprawdzono konsolę firebug), ale nie wydaje się, aby funkcja powodzenia była kiedykolwiek wywoływana. I nie mogłem zobaczyć żadnego wyjścia konsoli w jsFiddle, które dałeś. Czy mógłbyś dać mi znać, jeśli robię coś złego tutaj ... – CARTIC

+0

testowane/działa w chrome, firefox i safari. używam zdalnych danych, więc nie zadziała w IE (choć może w IE10). z którego korzystasz? –

+0

Cześć Neil, próbowałem z firefoxem 20.0.1, chrome 26.0 i IE 8. Zauważyłem, że plik json nie jest już pobierany w jsFiddle teraz i jest to spowodowane zaporą ogniową i ustawieniami bezpieczeństwa (polityka firmy). Czy istnieje sposób dodawania danych w linii w JsFiddle. Ponadto proszę dać mi znać, jeśli sposób, w jaki próbuję uruchomić próbkę z zaćmienia jest poprawny (jest to w moim poprzednim komentarzu). Tam udało mi się uzyskać dane json, ale funkcja sukcesu nigdy nie została wywołana. Próbowałem tego z firefoxem 20 z zainstalowanym firebugiem ... – CARTIC