10

ember-dataに問題があります。たとえば、http:// localhost /〜me/testでプロジェクトを作成しました

私のプロジェクトでは、次のようにストアとモデルを作成しました。

... init stuff here ...

var attr = DS.attr;
App.Person = DS.Model.extend({
    firstName: attr('string'),
    lastName: attr('string'),
});

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

今、私が(私のルートのどこかで)このような人を検索すると

var person = App.Person.find(params);

http:// localhost / peoples?post_id=10が呼び出されます。もちろんこれは存在しません。http:// localhost /〜me / test / peoples?post_id=10のようなものを期待していました。http:// localhost /〜me / test / peoples.php?post_id = 10このURLを変更するにはどうすればよいですか?

4

3 に答える 3

9

これはEmberDataBeta3の時点です

namespaceプレフィックスを処理するには、のプロパティを使用できますDS.RESTAdapterbuildURL接尾辞を処理するには、のメソッドをカスタマイズしDS.RESTAdapter、を使用_super()して元の機能を取得し、それを変更する必要があります。次のようになります。

App.ApplicationAdapter = DS.RESTAdapter.extend({
    namespace: '~me/test',
    buildURL: function() {
        var normalURL = this._super.apply(this, arguments);
        return normalURL + '.php';
    }
});
于 2013-10-29T21:07:00.130 に答える
6

MilkyWayJoeは正しいです、あなたのアダプターであなたは名前空間を定義することができます。

App.Adapter = DS.RESTAdapter.extend({
  namespace: '~/me/test'
});
于 2013-01-18T22:31:12.127 に答える
4

これも機能します:

App.Person = DS.Model.extend({
    url: '~me/test/persons',
    firstName: attr('string'),
    lastName: attr('string'),
});

または、名前空間と.phpパスを使用する場合:

App.Adapter = DS.RESTAdapter.extend({
  namespace: '~/me/test',
    plurals: {
        "persons.php": "persons.php",
    }
});

App.Person = DS.Model.extend({
    url: 'persons.php',
    firstName: attr('string'),
    lastName: attr('string'),
});

複数形のビットは、EmberDataが「s」を追加しないようにするためのものです(例:person.phps)。

于 2013-03-22T09:06:32.020 に答える