0

私は EmberData にあまり慣れていないので、使用していません。代わりに、次を使用してモデルを取得しています$.getJSON:

App.Persons = App.Model.extend({
    id : null,
    name : null,
    email : null
});

App.PersonsRoute = Ember.Route.extend({
    model : function() {
        return App.Persons.findAll();
    }
});

App.Persons.reopenClass({
    findAll : function() {
        return $.getJSON("personsjson.php").then(function(response) {
            var s = [];
            $.each(response, function(i, row) {
                return s.pushObject(App.Persons.create(row));
            });

            return s;
        });
    }
});

App.Router.map(function() {
    this.resource('persons', function() {
        this.resource('person', {
            path : '/:person_id'
        });
    });
});

LinkTo Helper を使用している人の名前をクリックしたときにメールを表示したかったのです。だから私はこのような人ルートを作成しました、

App.PersonRoute = Ember.Route.extend({
    model : function(params) {
        return App.Persons.findBy('id', params.person_id);
    }
});

しかし、URL では、最後に ID を取得する代わりに、「未定義」を取得しています。

これが私がHTML側でやっていることです、

            {{#each person in content }}
            <tr><td>
             {{#link-to 'person' this}} <p>{{person.name}}</p>{{/link-to}}
            </td></tr>
            {{/each}}

問題は何ですか?

誰かが興味を持っているなら、私はこれをバックエンドでやっています。

SELECT id, name, email FROM persons;
4

1 に答える 1

0

問題は、モデルではなくthisへの参照であることです。したがって、これを機能させるには、次のように渡します。App.PersonsControllerApp.Personperson{{#linkTo}}

{{#each person in content }}
    <tr><td>
    {{#link-to 'person' person}} <p>{{person.name}}</p>{{/link-to}}
    </td></tr>
{{/each}}

- - アップデート - - -

また、モデルの名前を App.Persons ではなく App.Person に変更してみてください

App.Person = App.Model.extend({
    id : null,
    name : null,
    email : null
});

App.PersonsRoute = Ember.Route.extend({
    model : function() {
        return App.Person.findAll();
    }
});

App.Person.reopenClass({
    findAll : function() {
        return $.getJSON("personsjson.php").then(function(response) {
            var s = [];
            $.each(response, function(i, row) {
                return s.pushObject(App.Person.create(row));
            });

            return s;
        });
    }
});
于 2013-09-04T02:57:27.730 に答える