我想要在路由模型中的数据更改时更改控制器中的计算属性。基于EmberJS中的路由模型的控制器中的计算属性
路线:
import Ember from 'ember';
export default Ember.Route.extend({
model() {
return new Ember.RSVP.hash({
ingredients: this.store.findAll('ingredient'),
recipes: this.store.peekAll('recipe')
});
},
setupController: function(controller, modelHash) {
controller.setProperties(modelHash);
}
});
控制器:
import Ember from 'ember';
export default Ember.Controller.extend({
pageNumber: 0,
pageSize: 16,
pages: function() {
var pages = [];
if (this.model != null) {
var content = this.model.recipes;
while (content.length > 0) {
pages.push(content.splice(0, this.get("pageSize")));
}
}
return pages;
}.property('[email protected]', 'pageSize'),
recipesOnPage: function() {
return this.get('pages')[this.get('pageNumber')];
}.property('pages', 'pageNumber')
});
此代码不会产生错误,但不工作 - “页面” 总是空的。并且“页面”属性不会在模型更改时重新计算。我究竟做错了什么?以及如何实现预期的结果?
P.S. Ember版本 - 1.13。
谢谢,它的工作原理。然而,现在我有“食谱”的问题,导致它PromiseArray,但这是另一个问题=)。 – Crabar
promises在'model'钩子中解析(或拒绝),所以在控制器'recipes'中是Ember.Array – artych