2

複数の TextField の行を動的に追加する単純なフォームのような UI を構築しようとしています。XML と JS を使用してカスタム コンポーネントを構築しました。これは、これらの TextField (開始、終了、期間) に何らかの相互作用があるためです。

私は NativeScript のスターターですが、データ バインディングとイベント構造がうまくいきました。ui/builder を介してカスタム コンポーネントを追加できました。私が完全に立ち往生しているのは、このコンポーネントインスタンスに「オプション/引数」を取得することです。私が達成しようとしているのは、カスタム コンポーネントを追加し、コンポーネント Obsverable に入力するデータを与えることです。後の(保存)アクションで、これらのデータを「メイン」ビューから取得できるようにしたいと考えています。

私の構造は次のようなものです:

main.js

exports.loaded = function(args) {
    var page = args.object;
    page.bindingContext = model;

    var outerContainer = page.getViewById('outerContainer');

    var vma = builder.load({
        path: 'widgets/durationRow',
        name: 'durationRow'
    });

    outerContainer.addChild(vma);
};

カスタムコンポーネント「durationRow.js」

var componentModel = new Observable({
    label:      "",
    start:      "",
    end:        "",
    duration:   ""
});

exports.onLoad = function(args){
    var container = args.object;
    container.bindContext = componentModel;
};

exports.componentModel を介して componentModel をエクスポートし、main から vma.componentModel に対処しようとしました。しかし、vma は「JS モジュール」ではなくビューです。私は本当に立ち往生しており、私のシナリオのようなことをしている例は見つかりませんでした.

誰かが私を正しい方向に向けることができますか?

ありがとう!

4

1 に答える 1

2

したがって、その問題に対する答えは非常に簡単です。ドキュメントを読んでください:)

attributesそのために正確に使用できるオプションがあります。私はこれで終わった:

var row = builder.load({
    path: 'widgets/durationRow',
    name: 'durationRow',
    attributes: {
        bindingContext: bindingModel
    }
});
container.addChild( row );

そして、ロードされたウィジェットで、「挿入された」モデルを bindingContext として取得します。

exports.onLoad = function(args){
    page = args.object;
    var model = page.bindingContext;
};

これが役立つことを願っています!

于 2016-10-04T05:34:17.607 に答える