ノックアウト 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 );
これは可能ですか?