2017-03-29 10 views
-2

データバインド属性を動的にバインドします。ノックアウトでデータバインド属性を動的にバインドします

https://jsfiddle.net/km89jfyp/5/

/km89jfyp/5/ 
+1

正確に達成したいことはありますか?何かエラーがありますか? – ACOMIT001

+0

@ ACOMIT001いくつかの列にdata-bind = "numeric:MachineNo"とdata-bind = "text:CountLabel"を追加したいのですが、テーブル本体に値を丸める必要があります – Avi

+0

ケースで何が起こると思いますか?数字はビルトインバインディングではなく、TDエレメントにアタッチしたときに何ができるか分からない場合でも表示されますか? –

答えて

0

ko.applyBindingAccessorsToNodeあなたは動的バインディングを適用するためにそれを使用できるように文字列として適用するバインディングの名前を取り、このリンクをご確認ください。あなたはイベントの中であなたのJavaScriptからそれを使うことができますし、カスタムバインディングを使ってhtmlの中で使うこともできます。 <span data-bind="applyBinding: MyBinding, bindingTarget: myValue"></span>

私はこれが動作することを確認することはできませんので、あなたのコードは、まだ多くの質問を私に残します:あなたが好きな結合でそれを使用することになり

ko.bindingHandlers.applyBinding = { 
    init: function(element, valueAccessor, allBindingsAccessor, data, bindingContext) { 
    var bindingName = ko.unwrap(valueAccessor()); 
    var target = ko.unwrap(allBindingsAccessor().bindingTarget); 
    if (bindingName) { 
     var binding = {}; 
     binding[bindingName] = function() { 
     return target; 
     }; 

     ko.applyBindingAccessorsToNode(element, binding, bindingContext); 
    } 
    } 
} 

:カスタムバインディングは次のようになります。あなたのために。リンクしたサンプルにはバインディング以外にも多くの問題があるので、エラーを修正して動作させるためにいくつかの前提を設定する必要がありましたが、コードに基づいた例を示します:jsFiddle

+0

、私はここでコードとロジック全体を共有していません。私はテーブルヘッダーとテーブル本体をユーザー選択フィールドの列に基づいて動的にバインドしています。エンドユーザーが選択した内容に基づいて行と本体をバインドします。たとえば、エンドユーザーがテキスト列(Name.Addrなど)を選択すると、数値列(年齢、郵便番号、電話など)、小数点フィールド(給与およびその他の小数フィールド)が選択されます。また、彼がアクティブであるかどうか、アイコンとして非アクティブです。だから私はノックアウトで同様のことをアーカイブしたい。どうすればdata-bind = "text:/ Numeric/numerictext"を動的に設定できますか? – Avi

+0

はい。私の答えが役に立ちましたか、それともあなたのコードにそれを適応させるのに問題がありましたか? –

+0

#jason、それは私の問題を解決しませんでした。このリンクをチェックしてくださいhttps://jsfiddle.net/swvo7u00/3/ – Avi

関連する問題