3

ノックアウト js カスタム バインディングを使用してコンポーネントを作成しようとしています。これは良い考えではないかもしれません。同じことを行う他の方法があれば、私は代替案を受け入れます。

アイデアは、要素にカスタムバインディングを設定して、バインディングに渡されたデータに基づいて要素のコンテンツが満たされるようにすることです。

たとえば (jade テンプレートで)、次のように記述します。

div(data-bind="keyValueEditor: $data.somePropertyHoldingSomeData")

そして、私は次の(質問のために簡略化された)カスタムバインディングを持っています:

ko.bindingHandlers.keyValueEditor = {
    init: function ( element, valueAccessor ) {
        var value = valueAccessor();

        var valueUnwrapped = ko.unwrap( value );

        $( "<span data-bind='text: theDataThatWasPassedToTheBinding.value'/>" ).appendTo( element );
        }
    },
    update: function ( element, valueAccessor ) {
    }
};

valueこれは、バインディングを使用してスパン コンテンツにバインドしたいオブザーバブルですtext。私の問題は、何を入れればよいかわからないため、バインディングの値として渡されたtheDataThatWasPassedToTheBindingものと同じになることです。$data.somePropertyHoldingSomeData

私は試した:

$( "<span data-bind='text: " + valueAccessor().value + "'/>" ).appendTo( element );

$( "<span data-bind='text: " + ko.unwrap( valueAccessor() ).value + "'/>" ).appendTo( element );

これは可能ですか?

4

1 に答える 1