从存储操作数据

Manipulating data from store

本文关键字:数据 操作数 操作 存储      更新时间:2023-09-26

我想操纵我从store对象(this.store.find('...')等)获得的数据,如限制(我不能只是向API发送限制,因为我现在只是使用固定装置)或逆转结果。

对于限制,我已经尝试实现limit助手并在each块(#each (limit recentItems 5) ...)中调用它;

import Ember from 'ember';
export default Ember.Helper.helper(function(params) {
  return params[0].slice(0, params[1]);
});

我不知道为什么它不起作用,但似乎结果对象不是数组,因此我无法切片。

谢谢。

操作模型正是您的路由上的afterModel方法的作用。

它通过了你的解析模型(所以你不必担心承诺),你可以修改它到你的核心内容。

App.PostsRoute = Ember.Route.extend({
  afterModel: function(model, transition) {
    // Modify the model here
  }
});

afterModel文档

编辑:评论讨论后的附加建议…

如果你想获取一个额外的模型(在模型钩子之外),并在控制器上访问它,那么你可以在路由上的setupController钩子中获取它,并在控制器上设置它之前在那里修改它。

setupController: function(controller, model) {
  // Default functionality
  this._super(controller, model);
  // Create items ArrayProxy and set it on the controller
  var arr = Ember.ArrayProxy.create({});
  controller.set('recentItems', arr);
  // Fetch additional model
  this.store.find('items').then(function(items) {
    // Promise has resolved by this point
    var i = 0;
    // Iterate over first 5 returned items
    while (i < 5) {
      // Add each item to recentItems property on controller
      controller.get('recentItems').addObject(items[i]);
    }
  });
}

setupController文档