Chociaż rozwiązanie jest proste, pozwól mi spróbować wyjaśnić. Jeśli nie masz pewności, zadaj dowolne pytania.
Masz powiązanie z usługą na instancji z App.indexController
. Jednak to wystąpienie nie istnieje, ponieważ Ember.JS nie umieszcza już instancji kontrolerów bezpośrednio na App
.
on używany do przebywania na App
w poprzednich wersjach Ember, ale nie dłużej, bo to zła praktyka, aby odwoływać się do kontrolera przy użyciu jego nazwy absolutną, ponieważ tworzy tight coupling pomiędzy kontrolerami.
Dlatego właśnie Ember.JS ma inne sposoby odniesienia do kontrolerów. Powszechnym wymogiem jest potrzeba innych kontrolerów w twoim bieżącym kontrolerze. Ember.js mają następujące metody:
Dlatego, jeśli implementujemy needs
, Twój kontroler ma teraz dostęp do drugiego kontrolera, a także właściwości, które posiada: http://jsfiddle.net/uB5tX/7/
Korzystając z needs
, mamy luźno sprzężone sterowniki. Odwoływaliśmy się do niego po nazwie, a Ember.JS będzie sprawdzał dla nas kontroler. Jeśli zmienimy App
, nie będziemy musieli zmieniać niczego, a jeśli/kiedy Ember.JS zmieni zachowanie kontrolerów, nie będziemy musieli ponownie aktualizować naszego needs
, ponieważ gdy zachowanie się zmieni, to aktualizacja zostanie również zaktualizowana needs
, przywracając prawidłowy kontroler.
Bardzo dziękuję !. Więc jeśli nie możesz zrobić aplikacji.someController, jak to działa teraz w szablonach z #each, np .: ** {{# each app.someController}} **? –
Nie ma potrzeby określania części 'Controller', jeśli używasz podejścia' needs'. Jeśli 'IndexController'' potrzebuje '' AnotherController' to w 'IndexController' po prostu nazwałbyś to: 'controllers.another'. To samo dotyczy widoków: '#each controllers.another'. – Wildhoney
ok. Ostatnia sytuacja. Co powiesz na ArrayController, w jaki sposób przejdziesz przez to. W [tym] (http://jsfiddle.net/ud3323/4ysxQ/) skrzypce wciąż robią to staro i nie mogę go uruchomić w [tym] (http://jsfiddle.net/jeanluca/ uB5tX/9 /) fiddle –