动态更新查询参数

时间:2017-05-26 14:04:15

标签: ember.js

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

null

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

Please find an example here,导航至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) } }); 路线,然后点击按钮。在控制台内部,您可以看到模型挂钩不会再次触发。

1 个答案:

答案 0 :(得分:3)

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

你能做什么?只需使用action帮助程序,一切都会正常工作。只需查看以下twiddle即可。将更新URL并根据您的意愿执行模型钩子。记住那个; action帮助器对于设置正确的this上下文至关重要,即使它看起来像是正常的函数传递和调用。