在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)
}
});
路线,然后点击按钮。在控制台内部,您可以看到模型挂钩不会再次触发。
答案 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
上下文至关重要,即使它看起来像是正常的函数传递和调用。