0

この例http://emberjs.com/guides/controllers/dependencies-between-controllers/に従って、アプリのネストされたリソースを実装しましたが、引き続きルートとタイプのエラーを受け取ります。

次のようにルートを作成しました。

App.Router.map(function () {
  this.resource('logs', {path: '/'}, function(){
    this.resource('log', {path:'/logs/:log_id'}, function(){
      this.resource('triggers');
    });
  });
});

私のコントローラー:

App.TriggersController = Ember.ArrayController.extend({
    needs:"log"
});

モデル:

App.Log = DS.Model.extend({
    name: DS.attr('string'),
    type: DS.attr('string'),
    messages: DS.attr('string'),
    triggers: DS.hasMany(App.Trigger, {async:true})
});

子モデル:

App.Trigger = DS.Model.extend({
    name: DS.attr('string'),
    pattern: DS.attr('string'),
    isEnabled: DS.attr('boolean'),
    colour: DS.attr('string'),
    highlightText: DS.attr('boolean'),
    invertContrast: DS.attr('boolean')
});

JSFiddle リンク: http://jsfiddle.net/WZp9T/11/

いずれかのリンクをクリックすると、コンソールにエラーが表示されます。

(「ルートの読み込み中にエラーが発生しました: TypeError {}」および「Uncaught TypeError: Undefined のプロパティ 'typeKey' を読み取れません」、および非推奨の警告)

基本的に、私が達成しようとしていることは次のとおりです。

ログ -> ログ -> ログ トリガー -> トリガー

各コンテキストは画面に表示されたままにする必要がありますが、どこが間違っているのでしょうか?

編集:これに問題があるようです:

App.LogIndexRoute = Ember.Route.extend({
  model: function (params) {
    return this.store.find(params.log_id);
  }
});

そのコードを削除すると、エラーが表示されなくなります。

4

1 に答える 1

0

検索したいオブジェクトの種類をストアに伝える必要があります。今は ID を渡すだけです。これはおそらくあなたが探しているものです:

App.LogIndexRoute = Ember.Route.extend({
  model: function (params) {
    return this.store.find('log', params.log_id);
  }
});
于 2013-10-18T05:27:07.503 に答える