Приспособленията Ember на модела не се зареждат при стартиране

Имам проблем относно зареждането на Ember данни от конкретен модел. Първо трябва да отбележа, че използвам require.js за зареждане на всички зависимости. Зареждам всички контролери, изглед, маршрути и след това ги добавям към моето глобално приложение Ember. Освен това имам прост модел с няколко полета като приспособления.

И така, първият път, когато нещо като App.MyModel.find().toArray().length ми отговори 0. Но когато приложението стартира, ако се опитам да изпълня това изречение, получавам правилната стойност.

Опитах се да разбера всяко събитие или метод (в контролера или маршрута), които все пак се изпълняват, но не го разбрах. Опитах се да задам controller.content на App.ready без успешен резултат

Може ли някой да ми помогне, моля?


person Lt.    schedule 01.05.2013    source източник
comment
Вярвам, че length е 0, защото find връща обещание и вие се опитвате да получите достъп до свойствата на обекта, докато той не е материализиран. Трябва да извикате find в Route#model и да зададете съдържанието на контролера в Route#setupController   -  person MilkyWayJoe    schedule 01.05.2013
comment
@MilkyWayJoe вашият коментар е повече от приемлив отговор, трябва да го публикувате като отговор :)   -  person intuitivepixel    schedule 01.05.2013
comment
Да, @MilkyWayJoe, точно това правя, но нямаше успех   -  person Lt.    schedule 01.05.2013
comment
Можете ли да създадете цигулка или да добавите своя код тук?   -  person MilkyWayJoe    schedule 01.05.2013
comment
Благодаря, @MilkyWayJoe. Най-накрая намерих решение след много гугъл   -  person Lt.    schedule 01.05.2013
comment
не знаех, че използвате модули   -  person MilkyWayJoe    schedule 01.05.2013


Отговори (1)


Решението в моя случай беше „набор от корекции“:

  1. Трябваше да разделя обекта на приложението Ember, за да задам първо екземпляра на DS.Store и да добавя към него „Моделите“
  2. Във втората част на този обект добавих всички контролери, изгледи, рутер и т.н
  3. Накрая, когато разширих обекта DS.Store, трябваше да задам атрибута simulateRemoteResponse: true

Крайният app.js код беше следният:

define(
    [ #dependencies ],

    function( #dependencies_objects ) {

        window.App = Ember.Application.create({
            VERSION: '1.0.0',
            LOG_TRANSITIONS: true,

            rootElement: '#app',

            // Store
            store: DS.Store.create({
                revision: 12,
                adapter : DS.FixtureAdapter.extend({
                    simulateRemoteResponse: false
                })
            }),

            // Models
            Item: Item  // Where Item is my own model
        });

        App.reopen({
            // Routes
            IndexRoute: IndexRoute,

            // Load routes
            Router: Router,

            // Controllers
            ApplicationController: Ember.Controller.extend(),
            IndexController: IndexController
        });

    }
);
person Lt.    schedule 01.05.2013