Ember Data — Uncaught TypeError: невозможно прочитать свойство «найти» неопределенного

Используя последние (из GitHub сегодня) данные Ember и Ember, этот код дает мне ошибку - Uncaught TypeError: Не удается прочитать свойство «найти» неопределенного в ember-data-latest.js: 3170

http://jsfiddle.net/Bf43W/9/

// only needed on JSFiddle; this is to trigger the route
history.pushState("", "", "/projects/1/tasks");

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

App.store = DS.Store.extend({
    revision: 4,
    adapter: DS.RESTAdapter.create()
});

App.Project = DS.Model.extend({
    name: DS.attr('string')
});

App.ApplicationController = Ember.ObjectController.extend({
});

App.ApplicationView = Ember.View.extend({
    templateName: 'application'
});

App.TasksView = Ember.View.extend({
    templateName: 'tasks'
});

App.Router = Ember.Router.extend({
    root: Ember.Route.extend({
        tasks: Ember.Route.extend({
            route: '/projects/:project_id/tasks',
            connectOutlets: function(router) {
                router.get('applicationController').connectOutlet('Tasks');
            }
        })
    })
});

App.router = App.Router.create({
    location: 'history'
});

App.initialize(App.router);

Изменение :projects_id в маршруте на что-то другое (например, 1, чтобы оно соответствовало URL-адресу) исправляет это, но, конечно, это не очень полезно.

Кто-нибудь может пролить свет на то, что здесь происходит? Спасибо!


person user1499207    schedule 06.07.2012    source источник


Ответы (3)


Я была такая же проблема. Я решил это, получив последнюю загрузку вместо компиляции последней фиксации из:

https://github.com/emberjs/data/downloads

Этот код трехмесячной давности, поэтому мы застряли на версии 4, но она стабильна.

ОБНОВЛЕНИЕ

Я смог приступить к этой работе после того, как заметил, что версия Ember, которую они используют в репозитории Ember-Data, новее, чем версия, которую вы загружаете с веб-сайта Ember:

// Version: v1.0.pre-156-gddcc580
// Last commit: ddcc580 (2012-09-21 09:52:25 -0700)

против

// Version: v1.0.pre
// Last commit: 7955b85 (2012-08-03 14:50:17 -0700)

После того, как вы скомпилируете последнюю версию Ember-Data, перейдите в dist/modules, чтобы получить версию Ember, для которой они разрабатываются.

Мне также пришлось изменить способ инициализации Store:

App.Store = DS.Store.extend({
  revision: 4,
  adapter: DS.RESTAdapter.create()
});

в

App.store = DS.Store.create({
  revision: 6,
  adapter: DS.RESTAdapter.create()
});

Мне также пришлось удалить строку App.initialize(), потому что эта более новая версия Ember, похоже, сама себя создает.

person Dwayne Forde    schedule 16.10.2012

Единственная ошибка в том, что вы должны капитализировать App.store. Вы объявляете класс, поэтому соглашение об именах требует App.Store, чтобы обеспечить правильную инициализацию приложения.

person sly7_7    schedule 06.07.2012
comment
На самом деле я бы сделал это наоборот: использовал DS.Store.create() и оставил App.store в нижнем регистре. - person pjmorse; 31.08.2012

Получил ту же проблему

В моем случае просто замена

App.Store = DS.Store.extend({
...
})

to

App.store = DS.Store.create({
...
})

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

person Roman Tataurov    schedule 19.02.2013