0

ArrayControllerを使用してemberアプリを初期化しようとすると、問題が発生しましたが、ember-dataがプロジェクトに追加された場合のみです。これがhttp://jsfiddle.net/ySmZr/2/の簡単な例です

App = Em.Application.create();
App.customerController = Em.ArrayController.create({});
App.initialize();​

次のエラーを返します:

Uncaught TypeError: Cannot call method 'get' of undefined  (ember-data-latest.js:3693)

ember-dataがなければ、エラーは発生しませんでした。どこを見ても、燃えさしがこのように振る舞う理由がわかりません...何か考えはありますか?ありがとう !

4

2 に答える 2

3

initialize()を呼び出すときは、ルーターのものを設定する必要があります。これを見る

ドキュメントから:

アプリケーションのプロパティとして、Ember.Routerのサブクラスを提供できRouterます。このRouterクラスのインスタンスがインスタンス化され、アプリケーションの initializeメソッドが呼び出されたときにルート検出が有効になります。routerルーターインスタンスは、アプリケーションのプロパティとして使用可能になります

2つの解決策があります:

  • initialize()を呼び出し、アプリケーションにルーターを提供し、その機能を使用します
  • initialize()を使用しないでください
于 2012-07-25T11:38:14.660 に答える
2

Ember Dataを使用している場合は、コントローラーのクラス(大文字)を作成してから、メソッドを拡張する必要があります。したがって、次のようになります。

App.CustomerController = Em.ArrayController.extend({});

次に、使用する必要があるときはいつでも、コントローラーのインスタンスを呼び出すだけです。

于 2012-07-25T15:59:06.507 に答える