gpt4 book ai didi

ember.js - 从后端接收更新数据后索引 View 不刷新

转载 作者:行者123 更新时间:2023-12-02 06:00:41 26 4
gpt4 key购买 nike

我正在测试我的应用程序,所以我正在执行以下操作:

  • 我显示了 #/locators/index 的索引 View ( Locator )对象,我最初使用 App.Locator.find(); 加载
  • 我手动修改后端
  • 手动(使用按钮/操作)我触发了 ember 前端中数据的刷新,而不更改路由。我用 App.Locator.find().then(function(recordArray) {recordArray.update();}); 做这个.我通过控制台日志看到一个列表请求被发送到后端,并且收到了最新数据。我假设这用于更新商店。
  • 但是: View 不会自行更新以显示此新数据

  • 为什么商店收到新数据时 View 不会自动更新?这不是 Ember 中数据绑定(bind)的重点吗?

    如果我现在执行以下操作:
  • 打开任何其他路线
  • 返回定位器索引路线(#/locators/index)
  • Ember 发送新请求以列出定位器
  • 显示索引 View ,其中包含正确的数据(因为它已经在商店中了?)
  • 收到新数据

  • (我不是 100% 确定 4 和 5 会按此顺序发生,但我很确定)

    所以,我的印象是数据在商店中得到了正确更新,但是需要以某种方式完全重新渲染 View 来显示这些新数据,例如通过离开和重新进入路线。这是真的?我可以以编程方式强制重新渲染吗?

    最佳答案

    当 Controller 更改底层模型时,Ember 更改 View 数据(绑定(bind)到 View )

    (只有当应用程序的状态改变(url改变)时才会调用路由器钩子(Hook))
    你的问题可以解决this.refesh()通过捕获由您的 View 触发的操作,在您的路线内。

    App.IndexRoute = Ember.Route.extend({
    actions: {
    dataChanged: function() {
    this.refresh();
    }
    },
    //rest of your code goes here

    });

    为此,修改数据的 Handlebars 模板应该有一个名为 dataChanged 的​​操作

    例子 :

    假设此操作负责更改/修改/删除基础数据
    <button {{action 'dataChanged'}}> Change Data </button>

    Refresh 方法实际上进行了模型刷新并将其传递给相应的 Controller ,该 Controller 确实改变了 View 。

    关于ember.js - 从后端接收更新数据后索引 View 不刷新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18210658/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com