无法访问模板中的模型存储
Unable to access model store in template
我的智慧就这样结束了,我知道我可能只是错过了一些非常明显的东西。试图让我的头脑与 Ember 和 Lavarel 一起工作。 Lavarel 正在正确发送数据,但我似乎无法在数据存储后访问它。我已经尝试了很多不同的方法来让它工作,但它总是显示为空白,就好像 model.car(或汽车、模型等)中没有任何内容。如果有人能指出我正确的方向,那将会很有帮助。我见过几个类似的问题,但 none 似乎解决了我的问题。
Model Data
Data Sent from Lavarel
cars.js(路线)
import Ember from 'ember';
export default Ember.Route.extend({
model: function() {
return this.store.findAll('car');
}
});
car.js(型号)
import DS from 'ember-data';
export default DS.Model.extend({
make: DS.attr('string'),
model: DS.attr('string')
});
cars.js(控制器)
import Ember from 'ember';
export default Ember.Controller.extend({
session: Ember.inject.service()
});
application.js(序列化器)
import DS from 'ember-data';
export default DS.RESTSerializer.extend({
normalizeSingleResponse(store, primaryModelClass, payload, id, requestType) {
let typeKey = primaryModelClass.modelName;
let ret = {};
ret[typeKey] = payload;
return this._normalizeResponse(store, primaryModelClass, ret, id, requestType, true);
},
normalizeArrayResponse(store, primaryModelClass, payload, id, requestType) {
let typeKey = primaryModelClass.modelName;
let ret = {};
ret[typeKey] = payload;
console.log(ret);
return this._normalizeResponse(store, primaryModelClass, ret, id, requestType, false);
}
});
cars.hbs(模板)
{{outlet}}
<ul id="todo-list">
{{#each model.car}}
<li>
<input type="checkbox" class="toggle">
<label>{{make}}</label><button class="destroy"> delete item</button>
</li>
{{/each}}
</ul>
如果您将汽车模型加载到商店中,那么您对所有事情都是正确的。正如您所说,您错过了一些非常明显的事情。即,您可以使用 model
而不是 model.car
进行访问。
对于接下来的调试,我鼓励您使用像 {{log 'model' model}}
这样的日志助手,这将在控制台中打印模型对象。您可以通过 ember template development helper ember 指南
<ul id="todo-list">
{{#each model as |car|}}
<li>
<input type="checkbox" class="toggle">
<label>{{car.make}}</label><button class="destroy"> delete item</button>
</li>
{{/each}}
</ul>
{{outlet}}
我的智慧就这样结束了,我知道我可能只是错过了一些非常明显的东西。试图让我的头脑与 Ember 和 Lavarel 一起工作。 Lavarel 正在正确发送数据,但我似乎无法在数据存储后访问它。我已经尝试了很多不同的方法来让它工作,但它总是显示为空白,就好像 model.car(或汽车、模型等)中没有任何内容。如果有人能指出我正确的方向,那将会很有帮助。我见过几个类似的问题,但 none 似乎解决了我的问题。
Model Data
Data Sent from Lavarel
cars.js(路线)
import Ember from 'ember';
export default Ember.Route.extend({
model: function() {
return this.store.findAll('car');
}
});
car.js(型号)
import DS from 'ember-data';
export default DS.Model.extend({
make: DS.attr('string'),
model: DS.attr('string')
});
cars.js(控制器)
import Ember from 'ember';
export default Ember.Controller.extend({
session: Ember.inject.service()
});
application.js(序列化器)
import DS from 'ember-data';
export default DS.RESTSerializer.extend({
normalizeSingleResponse(store, primaryModelClass, payload, id, requestType) {
let typeKey = primaryModelClass.modelName;
let ret = {};
ret[typeKey] = payload;
return this._normalizeResponse(store, primaryModelClass, ret, id, requestType, true);
},
normalizeArrayResponse(store, primaryModelClass, payload, id, requestType) {
let typeKey = primaryModelClass.modelName;
let ret = {};
ret[typeKey] = payload;
console.log(ret);
return this._normalizeResponse(store, primaryModelClass, ret, id, requestType, false);
}
});
cars.hbs(模板)
{{outlet}}
<ul id="todo-list">
{{#each model.car}}
<li>
<input type="checkbox" class="toggle">
<label>{{make}}</label><button class="destroy"> delete item</button>
</li>
{{/each}}
</ul>
如果您将汽车模型加载到商店中,那么您对所有事情都是正确的。正如您所说,您错过了一些非常明显的事情。即,您可以使用 model
而不是 model.car
进行访问。
对于接下来的调试,我鼓励您使用像 {{log 'model' model}}
这样的日志助手,这将在控制台中打印模型对象。您可以通过 ember template development helper ember 指南
<ul id="todo-list">
{{#each model as |car|}}
<li>
<input type="checkbox" class="toggle">
<label>{{car.make}}</label><button class="destroy"> delete item</button>
</li>
{{/each}}
</ul>
{{outlet}}