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

1)JavaScriptから直接config paramsを渡すのは安全ではないため、これを行う1つの方法は、親コンポーネント(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が記憶されるようになります。最初の方法では、渡されたパラメーターが1回だけ使用され(コンポーネントのロード時に)、その後「忘れられた」ため、これは提供されません。

要件に応じて、2つのうちの1つを選択してください。

于 2012-07-16T10:01:12.507 に答える
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 に答える