アクション列を持つ 2 つの netzke グリッド コンポーネントがあります (さらに追加する予定です)。アクション列は、タイプによって異なりますが、ほぼ同じです。唯一の違いは、アクション ボタンをクリックしたときに実行されるアクションです。
だから私がしたいのは、javascriptを含むすべての共有部分を持つ新しいグリッドコンポーネントを定義し、継承クラスでjavascriptを構成する(パラメータ/コンテキストを設定する)ことです。
まず、私のクラスは次のようになります。
class CpPoles < Netzke::Basepack::Grid
include Netzke::Basepack::ActionColumn
.. snipped ..
column :actions do |c|
c.type = :action
c.actions = [
{name: :locate_on_map, tooltip: "show on map", icon: :map_marker},
]
end
js_configure do |c|
c.on_locate_on_map = <<-JS
function(record){
Map.zoomToFeature('cp_poles', record.raw[0]);
}
JS
end
end
そして、私の他のクラスでは、layer_nameを除いて同じように見えます:
js_configure do |c|
c.on_locate_on_map = <<-JS
function(record){
Map.zoomToFeature('markerpoles', record.raw[0]);
}
JS
end
そこで、すべての共有構成を含み、アクションも定義する新しいグリッド クラスを導入しました。
js_configure do |c|
c.on_locate_on_map = <<-JS
function(record){
Map.zoomToFeature(this.layer_name, record.raw[0]);
}
JS
end
を設定するだけthis.layer_name
です。簡単に思いました。私のクラスCpPole
では、書くことができるようになりました
class CpPoles < Netzke::MyApplication::Grid
js_configure do |c|
c.layer_name = 'cp_poles'
end
end
しかし、それは機能しません:(だから私はミックスインとinitComponent
セットthis.layer_name
で試しましたが、それも機能しませんでした.共有グリッドの はCpPole クラスthis
の と同じではないのではないかと心配していますが、機能します.this
on_locate_map
これを解決するにはどうすればよいですか?