是否可以将额外参数传递给“loadNetzkeComponent”并在compnent配置中使用它们?
示例:
JavaScript的:this.loadNetzkeComponent({name: 'Erp::OrderPanel', container: 'workspace', params: { orderId: 1 }, scope: this });
红宝石:
class Erp::OrderPanel < Netzke::Base
# ...
def configuration(params)
super.merge(
scope: { order_id: params[:order_id] }
)
end
# ...
end
我知道,param
方法没有configuration
属性,但有没有办法做类似的事情?
答案 0 :(得分:1)
您可以使用session(或component_session)存储将参数传递给配置。
session[:order_id] = params[:order_id]
然后在配置中:
def configuration(params)
super.merge(
scope: { order_id: session[:order_id] }
)
end
答案 1 :(得分:1)
1)因为直接从JavaScript传递config params是不安全的,一种方法是覆盖父组件(调用loadNetzkeComponent的那个)中的deliver_component端点,在那里你可以对传递的参数进行最终的安全检查,然后覆盖组件配置。可以在netzke-core的测试应用程序中找到此示例:https://github.com/nomadcoder/netzke-core/blob/master/test/core_test_app/app/components/component_loader.rb#L98
2)在加载子组件之前,Dmytro建议的方法可能需要在的父级上进行额外的端点调用。在该端点中,您可以在会话中存储require param - 这样您就可以确保每次加载的子组件与服务器通信时都会记住param 。第一种方法没有提供,因为传递的参数只使用一次 - 在加载组件时 - 然后“忘记”。
根据您的要求,选择其中一个。