1

是否可以将额外的参数传递给“loadNetzkeComponent”并在组件配置中使用它们?

例子:

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,但是有没有办法做这样的事情?

4

2 回答 2

1

您可以使用会话(或 component_session)存储将参数传递给配置。

session[:order_id] = params[:order_id]

然后在配置中:

def configuration(params)
    super.merge(
      scope: { order_id: session[:order_id] }
    )
  end
于 2012-07-16T00:15:54.257 回答
1

1)因为直接从 JavaScript 传递配置参数是不安全的,一种方法是覆盖父组件(调用 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 参数 - 这样您将确保每次加载的子组件与服务器通信时都会记住该参数。第一种方法没有提供,因为传递的参数只使用一次 - 在加载组件的那一刻 - 然后“忘记”。

根据您的要求,选择两者之一。

于 2012-07-16T10:01:12.507 回答