2

durandal でナビゲートするポイントを逃したかもしれませんが、ボタンのクリックでビューをトリガーしたい場合、これはどのように行われますか?

ビューモデルのクリック機能にボタンをデータバインドしています。ただし、ビューモデルが読み込まれると、すぐにビュー リダイレクトがトリガーされます。

見る:

<button data-bind="click: gotoPage('mypage')">go somewhere</button>

ビューモデル:

gotoPage: function(page){

    router.navigate(page);
}
4

3 に答える 3

2

ビューモデル全体を投稿できますか? activate 関数にリダイレクトの原因となっているものがある可能性があります。動作するはずの例を次に示します。

define(['durandal/app',
    'knockout',
    'plugins/router'],
function (app, ko, router) {
    var vm = {
        CurrentEntity: ko.observable(),
        GoToPage: GoToPage
        activate: activate
    };
    return vm;

    function GoToPage(page) {
        router.navigate(page);
    };

    function activate() {
        // activation code here, make sure no redirect code exists here
    };
);

モデルが読み込まれると、 activate 関数のコードが実行されます。そこにリダイレクト コードがある場合は、それが問題である可能性があります。関数をまとめてバイパスしたい場合は、ボタンをアンカーに変更して、次のように href がルートを指すようにすることもできます。

<a href="#/MyDurandalRoute" >go somewhere</a>
于 2014-03-27T16:09:25.190 に答える
1

data-bind 属性の JavaScript「click: gotoPage('mypage')」は、バインディング時に評価されます。つまり、「gotoPage('mypage')」はバインディング時に実行され、結果はクリック イベントにバインドされます。 .

そのため、そのプロパティが目的の関数を指すプロパティにバインドする必要があります。

言い換えれば、あなたの見解でこれを行います:

<button data-bind="click: gotoMyPage">go somewhere</button>

ビューモデルで次のようにします。

define([
    'durandal/app',
    'knockout',
    'plugins/router'],
function (app, ko, router) {
    var vm = {
        CurrentEntity: ko.observable(),
        gotoMyPage: GoToPage
        activate: activate
    };
    return vm;

    function GoToPage() {
        router.navigate('#mypage');
    };

    function activate() {
        // activation code here, make sure no redirect code exists here
    };
);

パートB

GoToPage ルーチンはパラメーターを取ることができます。

    function GoToPage(page) {
        router.navigate(page.mypage);
    };

意見:

<table>
    <tbody data-bind="foreach: listOfPages">
        <tr>
            <td data-bind="text: mypage, click: gotoMyPage"></td>
        </tr>
    </tbody>
</table>

(listOfPages にはページ オブジェクトのリストが含まれ、各ページ オブジェクトには mypage 要素があります)。

詳細はこちら: foreach のノックアウト ドキュメント

于 2014-05-17T02:03:32.773 に答える