Sproutcore nested array one to many binding -


i have 3 tiers of objects, each 1 many. i'd like, when different notebook selected, page , column view elements cascading updates.

notebook > pages > columns

with notebookscontroller , notebookcontroller can bind

app.notebook = sc.record.extend({     name: sc.record.attr(string),     pages: sc.record.tomany('app.page', {ismaster: yes, inverse: 'notebook'}) });  app.page = sc.record.extend({     pagenumber: sc.record.attr(number),     notebook: sc.record.toone('app.notebook', {ismaster: no, inverse: 'pages'}),     columns: sc.record.tomany('app.column', {ismaster: yes, inverse: 'page'}) });  app.column = sc.record.extend({     columnnumber: sc.record.attr(number),     page: sc.record.toone('app.page', {ismaster: no, inverse: 'columns'}) }); 

following this, can't seem content binding pagescontroller work. want contents of pagescontroller, pagecontroller, columnscontroller, , columncontroller cascaded down when user clicks different notebook, views presented automatically flick across correct content.

arraycontroller notebookscontroller // contents filled fixture objectcontroller notebookcontroller // bound notebookscontroller selection arraycontroller pagescontroller // contentbinding: 'notebookcontroller.pages' not work! objectcontroller pagecontroller // bound pagescontroller selection // , down column 

assuming have single notebook, try

app.notebookcontroller = sc.objectcontroller.create({     // call app.notebookcontroller.set('content', anotebook)     // set content on controller });  app.pagecontroller = sc.arraycontroller.create({     // notebookcontroller proxy content, dont need      // 'content' in binding contentbinding: 'app.notebookcontroller.pages'      // bind list view app.pagescontroller.arrangedobjects.  if in code     // arranged objects reference array controller itself, has array methods     // on });  app.pageselectioncontroller = sc.objectcontroller.create({     //  need add      //      //  selectionbinding: 'app.pageselectioncontroller.content     //     //  collection view select page      // can in places see when things change.  controller proxy     // selected page.      selectiondidchange: function(){         console.log('page selection changed [%@]'.fmt(this.get('content');     }.observes('content') });  app.columnscontroller = sc.arraycontroller.create({    contentbinding: 'app.pageselectioncontroller.columns'     // again, want show columns, bind    // app.columnscontroller.arrangedobjects }); 

Comments

Popular posts from this blog

c# - SharpSVN - How to get the previous revision? -

c++ - Is it possible to compile a VST on linux? -

url - Querystring manipulation of email Address in PHP -