2012-10-20 5 views
0

에 기능을 추가 내 ViewModel에knockoutjs는 : 다음 뷰 모델

$.getJSON("api/BrowseCategory/Get", function (data) { 
    categoryViewModel = ko.mapping.fromJS(data); 
    categoryViewModel.clickAction = function() { 
      alert('hi'); 
     } 
    ko.applyBindings(categoryViewModel, $('.categories-gallery .frame').get(0)); 
}); 

의 기능 ClickAction를 추가하고 어떻게하지만 오류 메시지 "오류 얻을 .I이 함수를 호출 할 때 : 바인딩을 구문 분석 할 수 없습니다입니다. 메시지 : ReferenceError : clickAction이 정의되지 않았습니다. "

다음은이 함수를 호출하는 방법입니다.

<section class="categories-gallery"> 
         <div class="holder"> 
          <div class="frame"> 
           <article class="category-spacer"></article> 
           <!-- ko foreach: $data --> 
           <!-- ko foreach: ProductVariants --> 
           <article class="category" data-bind="click: clickAction,attr: { 'data-uuishlist-product-variant': JSON.stringify(ko.mapping.toJS($data)) }, css: { active: (($parentContext.$index() * $parent.ProductVariants().length) + $index()) == 1 }"> 
    </article> 
           <!-- /ko --> 
           <!-- /ko --> 
          </div> 
         </div> 
</section> 

json 개체에서 viewmodel을 만들기 위해 knoutoutjs 매핑 플러그인을 사용하고 있습니다. 그렇다면 클릭 할 때 함수를 어떻게 호출 할 수 있습니까?

답변

2

foreach 루프의 내부에서 현재 배열 항목의 속성을 바인딩합니다. 그러나 특수 변수 $parent, $parents$root을 사용하여 상위 수준의 개체에 바인딩 할 수 있습니다.

$root.clickAction에 바인딩하면 루트보기 모델로 이동할 수 있습니다.

특수 문맥 변수에 대한 추가 참조 : http://knockoutjs.com/documentation/binding-context.html