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

Updating template when route model changes (?)

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 并执行了一个操作,而不是用参数 'from' 更改 url 这是一个日期 return 一些几天前,模态可以调用并 return 新数据,但模板没有变化,我不知道该怎么做,如果有人可以帮助感谢您的时间。

也许还有另一种方法 (?)

这里的问题是您误用了模型挂钩。仅当尚未为路由提供模型以便为控制器生成模型时,才会调用路由的 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); });
    }
  }

});