【问题标题】:Updating template when route model changes (?)路由模型更改时更新模板(?)
【发布时间】:2015-03-26 19:52:27
【问题描述】:
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 并执行操作,而不是使用参数“来自”更改 url,这是几天前返回的日期,模态可以调用并返回新数据,但模板没有变化,我不不知道该怎么做,如果有人可以帮助感谢您的时间。

也许是另一种方法(?)

【问题讨论】:

    标签: javascript ember.js routes ember-cli


    【解决方案1】:

    这里的问题是您误用了模型钩子。路由的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); });
        }
      }
    

    });

    【讨论】:

    • 非常感谢! @runspired
    猜你喜欢
    • 2018-04-20
    • 1970-01-01
    • 1970-01-01
    • 2015-03-26
    • 2014-03-14
    • 1970-01-01
    • 2017-05-24
    • 2013-10-31
    • 1970-01-01
    相关资源
    最近更新 更多