1

最新の(今日のGitHubからの)EmberおよびEmber Dataを使用すると、このコードでエラーが発生します-Uncaught TypeError:ember-data-latest.js:3170でundefinedのプロパティ'find'を読み取れません

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と一致する)に変更すると、これは修正されますが、もちろんそれはあまり役に立ちません。

誰かがここで何が起こっているのかを明らかにすることができますか?ありがとう!

4

3 に答える 3

5

同じ問題がありました。最新のコミットをコンパイルする代わりに、最新のダウンロードを取得することで解決しました。

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

このコードは 3 か月前のものなので、リビジョン 4 を使用することになりますが、安定しています。

アップデート

Ember-Data リポジトリで使用されている Ember のバージョンが、Ember Web サイトからダウンロードしたバージョンよりも新しいことに気付いた後、この作業に取りかかることができました。

// 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()
});

この新しいバージョンの Ember はそれ自体をインスタンス化するように見えるため、 App.initialize() 行も削除する必要がありました。

于 2012-10-16T07:25:21.053 に答える
3

唯一の間違いは、App.store を大文字にする必要があることです。クラスを宣言するため、アプリの初期化を正しく行うために、命名規則には App.Store が必要です。

于 2012-07-06T22:55:22.387 に答える
0

同じ問題が発生しました

私の場合、交換するだけです

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

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

それを修正しました。したがって、Ember.js のバージョンは問題ではないと思います。とにかく、私の悩みを解決する方法を考えてくれてありがとう。

于 2013-02-19T19:50:51.617 に答える