2014-09-25 3 views
0

에 정의되어 있지 않습니다. 이 기능은 버튼을 활성화 또는 비활성화하는 데 사용됩니다. 컬렉션의 첫 번째 항목의 경우을 처리하지만 두 번째 경우에는 다음 오류와 함께 실패합니다. 컬렉션의 모든 CategoryModel이보기 좋습니다. 사용 가능 마크 업을 사용하면 컬렉션이 예상대로 렌더링됩니다.녹아웃 계산 된 속성은 내가 <strong>가</strong> 계산 방법을 CanCategoryBeDeleted이 <strong>의 모음 CategoryModel</strong> 이상 (foreach는 확장 드래그 플러그인)을 정렬 열거있어 두 번째 반복

Uncaught ReferenceError: Unable to process binding "sortable: function (){return { data:categories,afterMove:$root.orderCategories} }" Message: Unable to process binding "enable: function(){return CanCategoryBeDeleted }" Message: CanCategoryBeDeleted is not defined

마크 업입니다

<div data-bind="sortable: { data: categories, afterMove: $root.orderCategories }"> 
    <div class="mb20"> 
     <div class="well well-sm moveCursor"> 
      <div class="fl"> 
       <span data-bind="visible: !$root.isCategorySelected($data)"> 
        <a href="#" title="Edit name" data-bind="text: Name, click: $root.selectedCategory"></a> 
       </span> 
       <span data-bind="visibleAndSelect: $root.isCategorySelected($data)"> 
        <input data-bind="value: Name, event: { blur: $root.clearCategory }" class="form-control" /> 
       </span> 
      </div> 
      <div class="fr"> 
       <button class="btn btn-xs btn-danger" data-bind="click: $root.deleteCategory, enable: CanCategoryBeDeleted">Delete category</button> 
      </div> 
      <div class="clear"></div> 
     </div> 
     forum stuff here... 
    </div> 
</div> 

모델은 다음과 같이이다 :

function CategoryModel(data) { 
    var self = this; 
    self.Id = ko.observable(data.Id); 
    self.Created = ko.observable(data.Created); 
    self.IsPersisted = ko.observable(data.IsPersisted); 
    self.Name = ko.observable(data.Name); 
    self.Order = ko.observable(data.Order); 
    self.Forums = ko.observableArray(data.Forums); 

    self.CanCategoryBeDeleted = ko.computed(function() { 
     console.log("CanCategoryBeDeleted..."); 
     if (self.Forums().length == 0) { 
      console.log("should enable"); 
      return true; 
     } 
     console.log("should not enable"); 
     return false; 
    }, self); 
} 

사람이 내가 잘못 알고 있나요?

+1

아마도 JSFiddle에서 단순화 된 repro를 만들 수 있습니까? – nemesv

+0

제공 한 코드에 오류가 발생하지 않는 것은 없습니다. 또한 나는 "두 번째 것"이 의미하는 것을 정말로 이해하지 못합니다. 'sortable'에서'foreach'로 변경해보고 차이가 있는지 살펴볼 수 있습니까? –

+0

나는 바이올린을 만들었습니다 : http://jsfiddle.net/Amethi/cLLey9by/4/ Michael, 배열의 첫 번째 항목을 렌더링하지만 두 번째 배열 항목에서 오류가 발생합니다. 나는 foreach와 가진 놀이가있을 것이다. – Amethi

답변

0

나는 doofus 인 나를했다. 카테고리 모델이 아닌 단순한 js 객체를 열거했습니다. js 객체를 모델로 변환하면 해당 객체가 작동합니다.

+0

당신은 우리를 일할 수있는 fiddle :) 건배 –