ember.js - 动态更新查询参数

标签 ember.js

在 ember.js 中如何动态更新查询参数?

export default Ember.Controller.extend({
    myQuery: "test",

    queryParams: ["myQuery"],

    actions: {
       click() {
          this.set("myQuery", "update query param");
      }
    }
});


export default Ember.Route.extend({
  queryParams: {
    myQuery: { refreshModel: true }
  },
  model(params) {
    console.log(params)
  }
});

当操作被触发时,应该再次调用模型钩子(Hook),除非我错了?

Please find an example here ,导航到 /test 路线并单击按钮。在控制台内,您可以看到模型 Hook 没有再次触发。

最佳答案

您的问题与您没有使用 action 帮助器将操作传递给 my-button 组件以及传递像 click=actions 这样的操作有关从 test.hbs 中单击。当你这样做时; Emberjs 未正确设置为 click 函数运行的 this 上下文。也就是说,如果您调试代码,您将会看到这一点;当 test.js Controller 中的 click 操作实际上设置为 my-button 组件时,您的旋转中的此上下文。这意味着您只需设置 my-button 组件的 myQuery 属性;它对 Controller 的 myQuery 属性没有任何作用;因此, Controller 的属性不会更新,因此即使您将其声明为 refreshModel: true,模型 Hook 也不会再次运行。

你能做什么?只需使用 action 帮助器,一切都会正常工作。只需检查以下twiddle 。 url 将更新,并且模型 Hook 将按照您的意愿执行。记住这一点; action 帮助器对于设置正确的 this 上下文至关重要,即使它看起来像一个正常的函数传递和调用。

关于ember.js - 动态更新查询参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44203599/

相关文章:

javascript - Ember集成测试,如何使用wait构建自定义Helper?

javascript - 如何使用字符串键在 Ember 模板中查找关联数组/对象值

javascript - 在 ember.js 中打印数组的问题

javascript - Ember.js:内部引导过程中的 "Undefined is not a function"

Ember.js:无法访问注入(inject)的对象

javascript - 如何将 dc.js 与 Ember.js 一起使用?

javascript - 从 1.2.2 升级 Ember Web 应用程序

ember.js - 在哪里放置固定装置?

ember.js - 具有动态分段的资源并在嵌套路由中检索模型

ember.js - 当 ember-data 完成加载并呈现元素时应用 JQuery 效果