路线模型更改时更新模板(?)

时间:2015-03-26 19:52:27

标签: javascript ember.js routes ember-cli

import Ember from 'ember';

export default Ember.Route.extend({
logMore: 20,
dateEncode: "",
model: function(){
 var url = "https://xxxx/api/xxxx";
 var localData = JSON.parse(localStorage.getItem("user"));
 var data = { auth_token: localData.user_token };

 ( this.get('dateEncode') !== "" )? url += "?from="+ this.get('dateEncode') : url;
 return Ember.$.ajax({ 
   url: url,
   headers: { "X-Api-Token": data.auth_token } 
 }).then(function(data) { 
   console.log(data);
   return data;
   });
 }.observes('dateEncode'),
 actions: {
   loadMore: function(){
      var today = new Date();
      today.setDate(today.getDate() - this.get('logMore'));
      var initial = this.get('logMore') + 10;
      this.set('logMore', initial);
    this.set('dateEncode', today.toISOString());
   }
  }
});

我正在使用ajax来调用API并做了一个动作,而不是使用param'从'更改url'它是几天前的日期返回,模态可以调用并返回新数据但模板没有变化,我不知道不知道该怎么做,如果有人可以帮你感谢你的时间。

也许另一种方法(?)

1 个答案:

答案 0 :(得分:0)

这里的问题是你滥用模型钩子。仅当路由尚未提供模型以便为控制器生成模型时,才会调用路由的model挂钩。

您添加到该功能的观察者不会在控制器上更改model

我建议扩展控制器以处理此操作(而不是将其发送到路由)并在那里处理loadMore逻辑。

import Ember from "ember";

export Ember.Controller.extend({

  actions: {
    loadMore: function () {
      var model = this.get('model');
      Ember.$.ajax({ /* add params */ })
        .then(function(data) { model.addObjects(data); });
    }
  }

});

相关问题