私は、ウィザードの各「ステップ」でノックアウトコンポーネントを動的に読み込むノックアウトでカスタムウィザードを構築しています。私はこれをすべて手間をかけずに稼働させることができました。それはかなりうまくいくようです。ウィザードのコールバックの作成?
ただし、特定のイベントが発生したときにウィザード内にコールバックを実装したいと考えています。たとえば、ナビゲーションの前後に表示されます。
は現在、私のナビゲーション機能の一つは次のようになります。
this.goNext = function() {
if (!this.canGoNext()) return;
this.currentStep(this.pages()[this.currentIndex() + 1]);
this.loadPage();
}
私はbeforePageChange
とonPageChange
と呼ばれる2つのコールバック関数を構築したいと思います。
私の一般的な仮定は、beforePageChange
は、いくつかのパラメータ、特に現在のページと次のページを渡すということです。しかし、私はまた、他のどのクラスからでもウィザードを使用することができるようにしたいと思っています。ウィザードは、そのナビゲーションコマンドを実行し、適切なコールバックをトリガーするターンで
this.wizard = Site.loadWizard(arguments);
this.wizard.beforePageChange(function(options) {
if (!options.currentPage.complete) return false;
// do stuff
return true;
});
:
例えば、私の親ページに私のようなものを持っているでしょう。
私はここに根本的に欠けているものがあるように感じます。
編集
次のように私の現在のバージョンでは動作します:ウィザードで
:ウィザードを実行するページで
this.canChangePage = ko.obserable(true);
this.beforePageChange = function (options) {
};
this.beforePageChangeHandler = function (options) {
this.beforePageChange(options);
// do stuff
return true;
};
this.onPageChange = function (options) {
};
this.onPageChangeHandler = function (options) {
this.onPageChange(options);
//do stuff
return true;
}
:
this.wizard = Site.loadComponent(params, function() {
this.wizard.beforePageChange = function (options) {
this.canChangePage(false);
};
}.bind(this));
私はthを実装するためのより良い方法があるかどうかわからないまたは、これが最善の解決策であるかどうか。
すでにwizard
インスタンスへのアクセス権を持っているので、あなたはそのcurrentStep
、観察を購読することができます(私は思う)自分のコメントに記述
あなたは観測で、 "beforeChange" イベントを購読することができます。私はあなたがその上にあなたの意図した機能を構築することができると確信しています。 – Tomalak