こんにちは私は少しのカスタムコードと呼ばれる任意のクリックハンドラー上で実行されるようにkoを設定しようとしています。 「クリック」バインディングハンドラに前後のコードを追加する最も簡単な方法は何ですか?knockoutjs bindinghandlersをオーバーライド
6
A
答えて
16
あなたはどちらかの結合click
をラップしているカスタムバインディングを作成したり、結合click
の元init
とupdate
機能への参照をオフに保存して、本物の1を置き換えることができます。
update
関数で、モデル値が更新されたとき(init関数に付属するイベントハンドラまたはプログラムによってプログラムによって)にトリガされるコードを実行するか、実際のハンドラの一部としてコードを実行するかを選択できます。あなたが後者を望むように私に聞こえる。
あなたの結合は、次のようになります。私は、実行時にあなたがここko.bindingHandlers.click.preOnClick
またはko.bindingHandlers.click.postOnClick
をオーバーライドすることができることを、このようなプリ/ポストコードを分割
(function() {
var originalInit = ko.bindingHandlers.click.init,
originalUpdate = ko.bindingHandlers.click.update;
ko.bindingHandlers.click = {
init: function(element, valueAccessor, allBindingsAccessor, viewModel, context) {
var wrappedValueAccessor = function() {
return function(data, event) {
//run some pre code
ko.bindingHandlers.click.preOnClick.call(viewModel, data, event);
valueAccessor().call(viewModel, data, event);
//run some post code
ko.bindingHandlers.click.postOnClick.call(viewModel, data, event);
};
};
originalInit(element, wrappedValueAccessor, allBindingsAccessor, viewModel, context);
},
update: originalUpdate,
preOnClick: function(data, event) {
alert("pre code for " + data.id);
},
postOnClick: function(data, event) {
alert("post code for " + data.id);
}
};
})();
はサンプルです:http://jsfiddle.net/rniemeyer/PksAn/
更新機能でカスタムコードを実行する必要がある場合は、分割して前後のコードを実行し、その間にoriginalUpdate
を実行します。
関連する問題
- 1. 残りのowl:Knockout BindingHandlersとTypescript?
- 2. knockoutJS
- 3. (KnockoutJS)
- 4. KnockoutJSメモリリーク
- 5. KnockoutJS - マッピングプラグイン
- 6. がKnockoutJS
- 7. KnockoutJSオプションバインディング
- 8. KnockoutJS - データバインディングエラー
- 9. knockoutjs - クイズ
- 10. KnockoutJSテンプレートバインディングボタン
- 11. knockoutjs KO
- 12. KnockoutJS二重バインディングウィジェットアプリケーション
- 13. MVC3とKnockoutJS DRYly
- 14. KnockoutJsでオートコンプリート
- 15. HTTPキャッシュKnockoutJSネイティブテンプレート
- 16. KnockoutJSは:jQueryの
- 17. KendoUI Knockoutjsドロップダウンリスト
- 18. knockoutjs - data-bind visible
- 19. KnockoutJSのcontenteditableバインディング
- 20. KnockoutJS:何か他
- 21. KnockoutJS - ViewModelにAbstracion
- 22. KnockoutJSマップ値は
- 23. はknockoutjsが
- 24. knockoutjs $ parent undefined
- 25. KnockoutJS配列が
- 26. knockoutJS +マスターページ/ビュー
- 27. knockoutJSハイチャートのダイナミックチャート
- 28. KnockoutJS見える
- 29. KnockoutJSと再帰テンプレート
- 30. Knockoutjs依存関係
ありがとうございます。それはたくさんの意味があります。 – Chin
RP、これをチェックしてもらえますか?カスタムバインディングプロバイダが必要です。http://stackoverflow.com/questions/14535102/binding-jagged-array-with-knockout – user960567
これは受け入れられる回答である必要があります。コードは正しいものであり、解決策は適切です。 –