所以我正在做的是非常基本的:将模型数据渲染到模板。 设置模型挂钩后,{{model}}对象不会在相应的模板中显示数据。 这是我的代码:
联系(路线):
user: Ember.inject.service('current-user'),
model: function()
{
// var that = this;
// console.log('whats being returned bitch: ', this.store.findRecord('contact', this.get('user').contactID));
//return this.store.findRecord('contact', this.get('user').contactID);
var records = this.store.findRecord('contact', this.get('user').contactID);
var promise = Ember.RSVP.defer();
// console.log('promise', promise.resolve());
// records.addObserver('isLoaded', function() {
// // console.log('records.getv', records);
promise.resolve(records);
//});
return promise;
},
setupController: function(controller)
{
// Get the parameters for the current route every time as they might change from one record to another
var params = this.paramsFor('dashboard.contact');
console.log('params', params);
// Set the data in the current instance of the object, this is required. Unless this is done the route will display the same data every time
this.module = Ember.String.capitalize(params.module);
this.id = params.id;
this.data = this.store.find(this.module,this.id);
// Set the data in the controller so that any data bound in the view can get re-rendered
controller.set('id',this.id);
controller.set('model',this.data);
controller.set('module',this.module);
}
});
首先我只是尝试this,但它没有显示数据,然后我尝试推迟承诺并解决它(如this),最后我尝试设置控制器(setupController函数)但是由于某些原因params是空的,因此无法正常工作:/
接触(模板):
<h1> Contact! </h1>
{{#each model as |contact|}}
<h3>{{contact.name}}</h3>
<h3>{{contact.password_c}}</h3>
{{/each}}
接触(模型):
import DS from 'ember-data';
export default DS.Model.extend({
name: DS.attr('string'),
password_c: DS.attr('string'),
birthdate: DS.attr('string'),
assistant: DS.attr('string'),
account_name: DS.attr('string'),
email1: DS.attr('string'),
facebook: DS.attr('string'),
phone_home:DS.attr('string')
// address: Ember.computed('primary_address_street', 'primary_address_state',
// 'primary_address_city', 'primary_address_country', function() {
// return '${this.get('primary_address_street')} ${this.get('primary_address_state')} ${this.get('primary_address_city')} ${this.get('primary_address_country')}';
// })
});
请帮忙!
答案 0 :(得分:0)
我们假设这是你的路由器
// app/router.js
import Ember from 'ember';
var Router = Ember.Router.extend({
});
Router.map(function() {
this.route('contacts', {path: '/contacts/:contact_id'});
});
export default Router;
和你的模特
// app/models/contact.js
import DS from 'ember-data';
export default DS.Model.extend({
name: DS.attr('string'),
password_c: DS.attr('string'),
});
然后这将是你的contacts.js路由它将扮演一个非常重要的角色,我们将使用Ember Data的findRecord从数据存储中检索单个记录。
// app/routes/contacts.js
import Ember from 'ember';
export default Ember.Route.extend({
model(param){
return this.store.findRecord('contact',param.contact_id);
}
});
注意:这个参数非常重要。参数从URL传递到模型中。此帖子模型的ID可以通过contact_id
访问。它使用该id来查找记录,以便可以返回它。默认情况下,具有相同名称的模板(联系人)可以访问此模型。
这里我们使用Ember Data的findAll。这只是返回后期数据存储中的所有记录。
// app/routes/application.js
import Ember from 'ember';
export default Ember.Route.extend({
model() {
return this.store.findAll('contact');
}
});
现在
// app/templates/application.hbs
{{#each model as |contact|}}
<h3>{{contact.name}}</h3>
<h3>{{contact.password_c}}</h3>
{{/each}}
由于我无权查看您的服务以及您的所有代码,因此我尝试简化您返回所有联系方式的方式,以及如何轻松地通过Param。
了解更多信息:https://guides.emberjs.com/v2.7.0/tutorial/ember-data/
您可以按照此代码进行自定义,我希望它可以解决您的问题。
更新:
如果您已有用户数据且没问题,请删除{{#each}} 让我们有{{contact.name}},这应该有用,你只需要#each 你有这样的联系方式,如this.store.findAll('contact');或者如果 你在这里必须有{{model.name}},那么模型就是 联系!