Access data from controller in view in didInsertElement

ember.js

Solution

Yes, this is how to access the list of users.

This happens because the `DashboardIndexView` is inserted into the DOM before the `controller.users` is populated with data from the server.

So when the view is rendered, `controller.users` is still empty, and will asynchronously be populated after the ajax request finishes, problem is, `didInsertElement` already fired.

In order to solve this, you need to access `controller.users` from another hook. `DidInsertElement` is the wrong place, because it will fire irrespective of whether `JP.User.find()` finished loading.

You just need to make sure that it re-fires when `JP.User.find()` is loaded even if view is already in the DOM. Something like this:

JP.DashboardIndexView = Ember.View.extend({
  didInsertElement: function() {
    this.usersChanged();
  },
  usersChanged: function() {
    if (!this.$()) { return; } // View not in DOM
    console.log(this.get('controller.users'));
  }.observes('controller.users.@each')
});

Problem

I am trying to access data from DashboardIndexController in DashboardIndexView ``` JP.DashboardIndexController = Ember.Controller.extend({ users: [] }); ``` Is it possible to access users in JP.DashboardIndexView in didInsertElement? ``` didInsertElement : function(){ console.log(this.get("controller.users").objectAt(0)); } ``` This is my DashboardIndexRoute: ``` JP.DashboardIndexRoute = Ember.Route.extend({ setupController: function(controller, model) { controller.set('users', JP.User.find()); } }); ``` Thank you EDIT ``` console.log(this.get("controller.users").objectAt(0)); ``` Returns data only when I go to `UsersIndex` and then back to `DashboardIndex`... I think it's something with initialization, but I don't know, how to fix it.

Original source