我在Ember中遇到了一个非常基本的问题。我尝试设置一个模型,我从登录中保存了一些信息,然后我想在另一个页面上使用它。
示例:mysite.com/(登录表单)=> mysite / home(主页,我想显示来自/和我的模型的一些信息)
到目前为止我已经这样做了:
在我的App.LoginController中:
var login = this;
$.ajax({
url: host,
type: 'POST',
data: data,
accepts: 'application/json',
success: function(data) {
login.reset();
console.log("DEBUG: Login Succeed");
login.store.push('user', {
id: data.session.user.id,
username: data.session.user.username,
firstname: data.session.user.firstname,
lastname: data.session.user.lastname,
email: data.session.user.email,
domainid: data.session.user.domainid,
role: data.session.user.role,
status: data.session.user.status
});
login.transitionToRoute('home');
在我的模型中:
App.User = DS.Model.extend({
domainid: DS.attr('string'),
email: DS.attr('string'),
firstname: DS.attr('string'),
lastname: DS.attr('string'),
role: DS.attr('string'),
status: DS.attr('string'),
username: DS.attr('string')
fullName: function(){
return this.get('firstname') + ' ' + this.get('lastname');
}.property('firstname', 'lastname')
});
在这里我的路由器:
App.Router.map(function() {
this.resource('login', { path: '/' });
this.resource('home');
});
App.HomeRoute = Ember.Route.extend({
model: function() {
return this.store.find('user');
}
});
编辑(忘了放我的模板)
<script type="text/x-handlebars" data-template-name="home">
<div class="group-detail">
<div class="group-label">
<label>Agent: {{fullName}}</label>
</div>
<div class="group-label">
<label>Account: {{username}}</label>
</div>
<div class="group-label">
<label>Status: {{status}}</label>
</div>
</div>
<div class="enquiry link">
{{#link-to 'enquiries'}}Enquiries{{/link-to}}
</div>
我看到我的信息保存在余烬数据中:模型类型:App.User
我有这些错误:
GET http://localhost/users 404 (Not Found)
Error while loading route: undefined
我想这一定是显而易见的,但我不知道。
感谢您的帮助!
答案 0 :(得分:0)
我想出了什么,但我认为这不是最漂亮的方式。
对于我的模板,我使用{{#each}}来显示商店中的信息:
<script type="text/x-handlebars" data-template-name="home">
{{#each}}
<div class="group-detail">
<div class="group-label">
<label>Agent: {{fullName}}</label>
</div>
<div class="group-label">
<label>Account: {{username}}</label>
</div>
<div class="group-label">
<label>Status: {{status}}</label>
</div>
</div>
{{/each}}
<div class="enquiry link">
{{#link-to 'enquiries'}}Enquiries{{/link-to}}
</div>
</script>
对于App.HomeRoute,我使用了store.all(&#39; user&#39;):
App.HomeRoute = Ember.Route.extend({
model: function() {
return this.store.all('user');
}
});
所以...它正在工作,但是有可能从商店中获得唯一的一个用户并且不显示它们吗?
答案 1 :(得分:0)
我知道这个问题已经有几个月了,但我认为这是您修复网页的方法:
在App.LoginController中,执行以下操作:
login.transitionToRoute('home', data.session.user.id);
在路由器中执行:
this.resource('home', { path: ':user_id' });
在你的路线中:
model: function(params) {
return this.store.find('user', params.user_id);
}
这应该是我相信的伎俩。