Javascript 使用“链接到”显示单个对象

Javascript 使用“链接到”显示单个对象,javascript,json,ember.js,getjson,Javascript,Json,Ember.js,Getjson,我不使用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.

我不使用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助手的人的名字时显示电子邮件。所以我创建了一条这样的人路线

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}}

问题是
是对
App.personcontroller
的引用,而不是
App.Person
模型。因此,要使此工作正常,请将
person
传递给
{{{linkTo}}
如下所示:

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

每当我点击此链接时,我都会得到这样的信息:“此链接处于非活动加载状态,因为它的至少一个参数当前有空/未定义的值,或者提供的路由名称无效。”此外,正如预期的那样,url应该以id结尾,但悬停时它不是。这可能是命名约定的问题。通常,您的模型将命名为
App.Person
,而不是
App.Persons
。Persons模型显示所有人。我只想给一个人看。对,但我是说重命名你的模型。将编辑我的答案以显示我的意思。
{{#each person in content }}
    <tr><td>
    {{#link-to 'person' person}} <p>{{person.name}}</p>{{/link-to}}
    </td></tr>
{{/each}}
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;
        });
    }
});