記事

Last Modified:

XMLコンポーネントをスクリプトから生成する #NativeScript #TypeScript

問題

XMLからコンポーネントを生成する処理を、スクリプトから実行したい。

公式ドキュメントに書かれてそうだけど、 The Basics - NativeScript Docs なんか微妙に書かれてるような書かれてないような、そしてうまく動かないような。

ググって見つけたのがこれで、 NativeScriptでxmlからViewを作成する+ListViewでの実践 - Qiita ただ builder のソースを眺めたときと雰囲気が違ったので、ちゃんと調べました。

解決

今の NativeScript だとこんな感じで書けるみたいです。

import { Builder } from "@nativescript/core/ui/builder";
import { sanitizeModuleName } from "@nativescript/core/ui/builder/module-name-sanitizer";
import { View } from "@nativescript/core/ui/core/view";

export function inflateLayout(moduleName: string, bindingContext?: any): View {
  const exports = global.loadModule(sanitizeModuleName(moduleName));
  const view = Builder.load(moduleName, exports);
  view.bindingContext = bindingContext;
  return view;
}

漁ったコードはこの辺りです。