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 のノックアウト ドキュメント