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

go to link download
download
alternative link download

No comments:

Post a Comment

Note: Only a member of this blog may post a comment.