处理来自商店的数据

时间:2015-10-13 09:52:24

标签: javascript ember.js

我想操纵我从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]);
});

我不确切知道它为什么不起作用,但似乎结果对象不是数组,因此我无法对其进行切片。恢复原状也是如此。

感谢。

1 个答案:

答案 0 :(得分:0)

操纵模型正是路线上afterModel方法的用途。

它已通过您已解决的模型(因此您不必担心承诺),您可以根据自己的心思对其进行修改。

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

afterModel documentation

编辑: 在评论中讨论后的其他建议......

如果你想获取一个额外的模型(在模型钩子之外)并且可以在控制器上访问它,那么你可以在路由的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 documentation