2013-06-01 7 views
0

Я начинаю с Ember.js, и я думаю, что есть очень простой ответ на мою проблему, поэтому, пожалуйста, несите меня.Получение собственности внутри контроллера в Ember.js

Я пытаюсь установить двустороннее связывание между свойством контроллера и значением «value» в Ember.TextField, который находится в шаблоне-корреспонденте контроллера. Я уже преуспел в предоставлении имущества в контроллере конкретного начального значения, которое отражается в свойстве валютации Ember.TexField, как:

код расслоения плотного:

App = Ember.Application.create(); 
App.IndexController = Ember.ObjectController.extend({ 
       aProperty: 1 }); 

шаблон:

<script type:"text/x-handlebars" data-template-name="index"> 
{{view Ember.TextField valueBinding="aProperty"}} 
</script> 

Теперь текстовое поле показывает значение («1»), и все в порядке. Если я сейчас попытаюсь ввести новое значение в текстовое поле, скажем «2», и попробуйте проверить значение «aProperty» в консоли браузера с помощью App.IndexController.get («aProperty»), он не работает и выдает ошибку и говорит, что «get()» не определен. Как я могу получить значение «aProperty» из IndexController и проверить, обновило ли оно значение, которое я ввел в Ember.TextField?

Любые советы, комментарии и советы с благодарностью!

Спасибо!

Редактировать: Ответы ниже выполнили то, что я пытался сделать. Я получил это работает слишком: Я создал конкретный экземпляр App.IndexController после вытянув его, как это:

App.IndexController = Ember.ObjectController.extend({ 
       aProperty: 1 }); 
App.indexController = App.IndexController.create(); 

и может получить значение aProperty из консоли с App.cueController.get('aProperty'). Тем не менее, все примеры из документации Ember никогда не создают конкретных экземпляров контроллеров, поэтому мне интересно, если это необходимо, а тем более не поощряется Ember для реального приложения. Есть идеи?

ответ

2

Вы должны Lookup контроллер, как это в вашей отладки консоли:

App.__container__.lookup('controller:index').get('aProperty') 

http://jsbin.com/uxojek/9/edit

+1

с помощью '__container__' полезен только для отладки и настоятельно рекомендуется для использования в коде приложения ... – intuitivepixel

+0

Да его только для отладки цели ... – selvagsz

0

С помощью __container__ только для отладки, если вы хотите, чтобы войти изменение свойств без использования частного __container__ вы можете установить наблюдателя на свойство контроллера, наблюдая за изменениями и записывая новое значение в консоль отладчика.

Пример:

App = Ember.Application.create({}); 

App.IndexController = Ember.ObjectController.extend({ 
    aProperty: 1, 
    aPropertyDidChange: function() { 
    console.log(this.get('aProperty')); 
    }.observes('aProperty') 
}); 

Работа jsbin.

Надеется, что это помогает

+0

Создания контроллеров вручную вне контейнер не является хорошей идеей для взаимодействия с остальной частью Ember. –

+0

@ LukeMelia вы абсолютно правы, это был быстрый и грязный ответ ...Я изменил его, чтобы отразить больше условных условностей, надеюсь, что теперь это более условно :) – intuitivepixel