Friday, December 29, 2017
ember js Differences Regarding created vs extended ember controllers their naming conventions and scope
ember js Differences Regarding created vs extended ember controllers their naming conventions and scope
ember.js - Differences Regarding created vs extended ember controllers; their naming conventions and scope -
right im hitting wall in understanding of ember controllers.
i have model "batch" never main model of route or controller. want able access objects of class via arraycontroller route in app.
therefore created empty batches controller nil more than
// controllers/batches.js app.batchescontroller = ember.arraycontroller.create();
then created batches initializer contains
// initializers/batches.js ember.application.initializer({ name: batch, after: preload, initialize: function (container, application) { var store; store = container.lookup(store:main); store.find(batch, { state: "uploaded" }).then(function (batches) { app.batchescontroller.set(content, batches.content); }); } });
note after lot of heartache, figured out setup worked capital b in batches controller although coworker had read should infact lower case , have no thought why either of 2 things important.
this setup works until need reference content of controller in controller. here sec controller:
// controllers/inbox.js app.inboxcontroller = app.librarycontroller.extend({ needs: [application, batches], hasactivebatches: function () { // here this.get(controllers.batches) ==> typeerror: undefined not function }.property(controllers.batches) });
instead can access content of batches controller via "app.batchescontroller" of no utilize creating computed property.
i realize fundamentally different controller because manually created instead of extended , instantiated ember dont understand difference or how affects options accessing its content.
any clarification going on behind scenes here , perchance improve pattern utilize here much appreciated.
controller classes should capitalized. shouldnt created, extended. when using needs should specify in camelcase. when ember creates controller keeps track of , makes available other controllers via needs, if create it, doesnt know it. using initializer weird here, itd create more sense in application controller batches , set controller.
id this, create array, , attach of controllers. access property right on controller without having utilize needs or (you inject on of routes if wanted).
ember.application.initializer({ name: batch, after: preload, initialize: function (container, application) { var store = container.lookup(store:main), batchesarr = []; application.register("my:batches", batchesarr, {instantiate: false}); application.inject("controller", "batches", "my:batches"); store.find(batch, { state: "uploaded" }).then(function (batches) { batchesarr.pushobjects(batches.toarray()); }); } });
example: http://emberjs.jsbin.com/nobima/8/edit
example of everyone has same collection, 1 updates, update: http://emberjs.jsbin.com/nobima/9/edit?html,js,output
example using controllerfor: http://emberjs.jsbin.com/nobima/11/edit
ember.js
alternative link download
No comments:
Post a Comment
Note: Only a member of this blog may post a comment.