8

私は現在、Foo が Bars 型の「toMany」プロパティを持つ 2 つのデータ モデルを使用しています。私は今、2 つの選択ボックスを作成しようとしています。最初の Foo が選択されると、その foo に関連付けられたバーのみをリストする 2 番目のリストが絞り込まれます。

JSFiddle ここ: http://jsfiddle.net/drew/6jLCy/

以下のコードですが、確かに機能しません。最初の SelectBox 値を設定するところまでは行きますが、対応するバー値のタイトルを 2 番目に入力しません。

App = Em.Application.create();

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

/**************************
* Models
**************************/

App.Foo = DS.Model.extend({
    bars: DS.hasMany('App.Bar'),
    title: DS.attr('string')
});
App.Bar = DS.Model.extend({
    foos: DS.hasMany('App.Foo'),
    title: DS.attr('string')
});


/**************************
* Fixtures
**************************/

App.Foo.FIXTURES = [
    {
        id: 0,
        title: 'Footitle 1',
        bars: [0,1]
    },
    {
        id: 1,
        title: 'Footitle 2',
        bars: [0,1,2]
    }
];

App.Bar.FIXTURES = [
    {
        id: 0,
        title: 'Bartitle 1',

    },{
        id: 1,
        title: 'Bartitle 2'
    },{
        id: 2,
        title: 'Bartitle 3'
    }
];


/**************************
* Views
**************************/

App.SetFooField = Em.Select.extend({
    contentBinding: 'App.fooController',
    valueBinding: 'content.selected',
    optionLabelPath: 'content.title'
});

App.SetBarField = Em.Select.extend({
    contentBinding: 'App.barController',
    valueBinding: 'content.selected',
    optionLabelPath: 'content.title'
});

/**************************
* Controllers
**************************/

App.fooController = Em.ArrayController.create({
    content: App.store.findAll(App.Foo)
});

App.barController = Em.ArrayController.create({
    contentBinding: 'App.fooController.selected.bars'
});​

HTML のマークアップ:

<script type="text/x-handlebars">

    {{view App.SetFooField}}
    {{view App.SetBarField}}

</script>​
4

1 に答える 1

1

聖なる牛。気が狂いそうなほど何日も過ごした後、これは完全に最新の ember-data のバグであることが判明しました。フィクスチャでは、すべての ID が文字列である必要があります。ただ。プレーン。ナッツ。

/**************************
* Fixtures
**************************/

App.Foo.FIXTURES = [
    {
        id: '0',
        title: 'Footitle 1',
        bars: ['0','1']
    },
    {
        id: '1',
        title: 'Footitle 2',
        bars: ['0','1','2']
    }
];

App.Bar.FIXTURES = [
    {
        id: '0',
        title: 'Bartitle 1',

    },{
        id: '1',
        title: 'Bartitle 2'
    },{
        id: '2',
        title: 'Bartitle 3'
    }
];

ember.js と ember-data を使用して、埋め込みのオブジェクト プロパティを取得できませんでした

その質問に答えてくれた@dgebに感謝します。

それに応じてjsfiddleが更新されました。

http://jsfiddle.net/drew/6jLCy/

于 2012-11-16T20:50:24.087 に答える