フォームブリッジ フィールドコードでの書き方

以下のサイトを参考に、フィールドの非活性を記述しました。 https://developer.cybozu.io/hc/ja/community/posts/360047545411-%E3%83%95%E3%82%A9%E3%83%BC%E3%83%A0%E3%83%96%E3%83%AA%E3%83%83%E3%82%B8%E3%81%AE%E3%83%95%E3%82%A3%E3%83%BC%E3%83%AB%E3%83%89%E3%81%AE%E9%9D%9E%E6%B4%BB%E6%80%A7%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6

しかし、state.fields[3] のような書き方だと項目の増減でフィールドの数字が変わってしまうため、 フィールドコードで指定したいです。

 

var fieldCode = ‘number’;

var field = state.fields.filter(function(field) { return field.code === fieldCode; })[0];

上記の書き方で普通の項目のフィールドコードでの指定はできたのですが、

テーブル内項目の書き方がわかりません。 テーブルのフィールドコードを指定したあとどのように書けばよいのでしょうか?

上記の書き方以外でも構いませんので教えていただきたいです。

また、上記の書き方は引用したものなので、 filterがどのような関数なのかと、[0]は何の数なのかがわかりません。わかる方がいましたらこちらの意味も教えていただきたいです。

Oさん

お世話になっております。

まず、stateのfieldsプロパティからサブテーブルのフィールド情報を取得します。
サブテーブルのフィールド情報内にもfieldsプロパティがあるので、そこからカラムのフィールド情報を取得すると良いです。

var tableFieldCode = 'subtable';
var columnFieldCode = 'single_line_text';
var tableField = state.fields.filter(function(field) { returnfield.code === tableFieldCode; })[0];
var columnField = tableField.fields.filter(function(field) { returnfield.code === columnFieldCode; })[0];

Array.filterは配列を、条件を満たす要素だけで絞り込むメソッドです。
返り値は配列なので、その1つめの要素を取得するという意味で、[0]を指定します。

 

今回の使用例では、取得する要素は1つとわかりきっているので、Array.findを使うと簡潔に書けます。

var field = state.fields.find(function(field) { return field.code === fieldCode; });

ただし、Array.findはES6からの機能なので、トランスパイルをしないとInternet Explorerなどの古いブラウザで動きません。

2022/6/15以降は、フォームブリッジ自体がInternet Explorer非対応になるので、Array.findを使うのでも良いかもしれません。
https://toyokumo.co.jp/2021/07/07/3443

このトピックはベストアンサーに選ばれた返信から 3 日が経過したので自動的にクローズされました。新たに返信することはできません。