在配置中使用loadNetzkeComponent的参数

时间:2012-07-15 16:05:27

标签: javascript ruby netzke

是否可以将额外参数传递给“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属性,但有没有办法做类似的事情?

2 个答案:

答案 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 。第一种方法没有提供,因为传递的参数只使用一次 - 在加载组件时 - 然后“忘记”。

根据您的要求,选择其中一个。