4

У меня есть свойство поиска в ApplicationController и связано с полем поиска. Я хочу получить доступ к полю поиска ApplicationController в ProjectController. он должен быть синхронизирован. Я использую следующий код, но его не работает.Как связать свойство контроллера приложения в другом контроллере ember

/приложение/контроллеры/проекты/index.js (проект Controller)

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

/приложение/контроллеры/application.js (Controller Application)

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

application.hbs

{{input value = search}}

+0

Какую версию уголек вы используете? 'needs' и привязки устаревают в текущих версиях ember. – Lux

ответ

3

Вы можете получить доступ к любому контроллеру в контроллере, введя его.

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

+0

Теперь это 'import {inject} из '@ ember/controller'; /*...*/ applicationController: inject ('application')' – crusy

1

Доступ к свойствам контроллеров включен с needs таким образом:

{{controllers.neededController.property}} 

В случае вас попробовать:

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

Смотрите пример здесь: http://jsfiddle.net/6Evrq/

+0

не работает. :-(Скажите, пожалуйста, другой способ: –

+0

Вы правы, метод, который я показываю, устарел. Я добавил пример jsfiddle, если кому-то понадобилось решение для более старой версии Ember, но ваш ответ определенно лучше. –

13

Ember потребностей является устаревшим и в настоящее время используется по-разному.

Это работает так:

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

В шаблоне HBS -

{{mySearch}} 

находится в синхронизации с приложениями недвижимости "поиск".

+0

** необходимо: ['Controller Name'] ** устарел? Почему я не смог получить доступ к контроллеру приложений с ** потребностями: ['Controller Name'] ** method? –

+0

Да, это устарело, использовалось в старом Ember. –

+0

Thank You ! Done .. –