Javascript 使用“链接到”显示单个对象
我不使用EmberData,因为我对它不太熟悉。相反,我使用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.
$获取模型。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;
});
}
});