"click : gotoPage ('mypage') '는 바인딩시 평가됩니다. 바인딩 타임에 gotoPage ('mypage') '가 실행되고 결과가 click 이벤트에 바인딩됩니다.
따라서 원하는 속성을 가리키는 속성에 바인딩해야합니다.
즉
가보기에이 작업을 수행 :
<button data-bind="click: gotoMyPage">go somewhere</button>
을 당신의 ViewModel이 뭔가를 할 거라고 :
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);
};
보기 : (listOfPages 페이지 개체의 목록을 포함, 각 페이지의 객체가 마이 페이지 요소가)
<table>
<tbody data-bind="foreach: listOfPages">
<tr>
<td data-bind="text: mypage, click: gotoMyPage"></td>
</tr>
</tbody>
</table>
. 여기
더 많은 정보는 : Knockout documentation on foreach
내 셋업은 예와 거의 동일 - 구조의 측면에서. 내 viewmodel 너무 큰 게시 할 수 있지만 기능을 비어 있습니다 - 코드가 전혀 없습니다. 또한 같은 방식으로 내 viewmodel 돌아갈 - VM 반환 변수, 변수 등을 선언 할 때 디버깅 할 때 'gotoPage'함수가 비록 click 이벤트가 발생하지 않는 한 . 이상한 것들. – bigerock
@bigerock gotoPage 함수를 디버깅 할 때 호출 스택을보고 호출 한 내용을 볼 수 있습니까?또한 프로젝트의 모든 파일에 대해 텍스트 검색을 수행하고 gotoPage라는 단어를 찾아서 포함시키고있는 일부 js 파일에서이 단어가 호출되지 않았는지 확인한 후 이전에 이런 일이 발생했는지 확인하십시오. – Frank