2012-06-25 13 views
5

Czy istnieje jakakolwiek inna możliwość obsługi kontrolerów Ember.Router i widoków? Moja struktura aplikacji zasadniczo zależy od require.js, który zajmuje się odpowiednimi zależnościami.Jak ustawić kontroler aplikacji w Ember.Router

W moim przykładzie robię rzecz App.ApplicationController jako główny kontroler routera.

Oto jsfiddle: http://jsfiddle.net/mediastuttgart/uMKGt/1/

Ale czy jest jakaś szansa, aby ustawić to ręcznie? Znalazłem ten komunikat zatwierdzenia https://github.com/emberjs/ember.js/commit/be69395f5eec4187b1df052d7386bcda45f79475, gdzie mogę zobaczyć, jak ustawić kontroler i przeglądać ręcznie (w każdym razie nie mógł tego zrobić działa). Ale nie mógł znaleźć żadnego przykładu takiego:

App = Ember.Application.create(); 

App.MyController = Ember.Controller.extend({}); 
App.MyView = Ember.View.extend({}); 

Router = Ember.Router.extend({ 
    applicationController : App.MyController, 
    root : Ember.Route.extend({ 
     index : Ember.Route.extend({ 
      route : '/', 
      connectOutlets : function (router) { 
       router.get('applicationController').connectOutlet(App.MyView); 
      } 
     }) 
    }), 
    ... 
}); 

EDIT

staram się to wyjaśnić nieco bardziej szczegółowo. Podczas gdy używamy require.js do zarządzania lub zależności, mamy wielu kontrolerów, którzy są odpowiedzialni za własne części całej aplikacji. Załóżmy, że mamy formularz rejestracji biuletynu. Kontroler używany dla tego scenariusza jest skonstruowany w

- app 
-- controller 
--- newsletter 
---- signup.js 
--- cart 
--- checkout 
-- view 
-- model 
-- router 
-- template 

Jak użyć funkcji niestandardowej do generowania nazw Em.Provide('App.Controller.Newsletter'); który tworzy obiekt w App.Controller.Newsletter. Obiekt ten służy teraz jako baza kontrolna dla całej naszej aplikacji biuletynu. Począwszy od App.Controller.Newsletter.Signup = Ember.Controller.extend({});, musimy przekazać w tym przypadku jako "ApplicationController" dla routera. Jak widać, nie możemy po prostu użyć App.ApplicationController do utworzenia instancji kontrolera dla Ember.Router.

Odpowiedz

9

Nie wiemy nic o requirejs, ale myślę, że jedyną rzeczą jest zdefiniowanie

App.ApplicationController = Ember.Controller.extend({...behavior here...}) 

i wtedy, gdy dzwoni

App.initialize() 

Ramy te następnie wstrzyknąć automatycznie ten kontroler w router.

+6

N.B. Nazewnictwo jest tutaj ważne. Ember szuka kontrolera ApplicationController w obszarze nazw aplikacji. jeśli oryginalne pytanie wykorzystało to zamiast MyApplicationController, zadziałałoby automatycznie. –

+0

@BradleyPriest Powinienem był napisać to ... –

+0

Dzięki za odpowiedzi. Zaktualizowałem moje pytanie, podając więcej szczegółów. –

Powiązane problemy