Внутри вашего flawTemplate
область действия равна caseStudy.selectedCase.Flaws
, поэтому, когда вы ставите caseStudy.showFlawDetails
, она не может быть найдена как свойство Flaws
или глобально.
Таким образом, вы можете ссылаться на него с app.viewModel.caseStudy.showFlawDetails
, если app
имеет глобальную область видимости (что, похоже, работает для вас).
В противном случае, хороший вариант - передать функцию через templateOptions.Итак, вы должны сделать:
data-bind='template: { name: "flawTemplate", data: caseStudy.selectedCase.Flaws, templateOptions: showFlawDetails: caseStudy.showFlawDetails } }'>
Затем вы получите к нему доступ, используя $item.showFlawDetails
Привязки click (и события) также ожидают, что вы передадите ему ссылку на функцию.В вашем случае вы передаете ему результат выполнения функции.Ответили об этом здесь: knockout.js вызывает щелчок, даже когда шаблон jquery отображается