Muhammad Ateek
Muhammad Ateek

Reputation: 1057

how to bind Application controller property in another controller ember

i have search property in ApplicationController and its linked with input field of searching. i want to access search field of ApplicationController in ProjectController. it should be sync. i use following code but its not working.

/ app/controllers/projects/index.js (project Controller)

import Ember from 'ember';
export default Ember.Controller.extend({
    needs: ['application'],
    searchBinding: 'controllers.application.search'
});

/ app/controllers/application.js (Application Controller)

  import Ember from 'ember';
    export default Ember.Controller.extend({
      search: ''
    )}

application.hbs

{{input value = search}}

Upvotes: 4

Views: 4260

Answers (3)

dynamic_cast
dynamic_cast

Reputation: 1105

You can access controllers properties included with needs this way :

{{controllers.neededController.property}}

In you case try :

{{input value=controllers.application.search}}

See example here : http://jsfiddle.net/6Evrq/

Upvotes: 1

kristjan reinhold
kristjan reinhold

Reputation: 2048

Ember needs is deprecated and is now used differently.

It works like this:

applicationController: Ember.inject.controller('application'),
mySearch: Ember.computed.alias('applicationController.search')

In your hbs template -

{{mySearch}}

 is in sync with applications property "search".

Upvotes: 15

Muhammad Ateek
Muhammad Ateek

Reputation: 1057

You can access any controller within controller by inject it.

import Ember from 'ember';
export default Ember.Controller.extend({
    applicationController: Ember.inject.controller('application'),
    searchProperty: Ember.computed.alias('applicationController.search'),
)};

Managing Dependences between Ember controllers

Upvotes: 6

Related Questions