2014-09-25 43 views
0

定義我有一個排序的枚舉(可拖動的插件,擴展一個foreach)超過集合CategoryModel具有CanCategoryBeDeleted計算方法。此功能用於啓用或不啓用按鈕。 對於集合中的第一項,它的工作原理是,但是對於第二項,它會失敗,並顯示以下錯誤。集合中的所有CategoryModel都很好看。如果啓用標記,則按預期呈現集合。淘汰賽計算財產不是第二次迭代

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 2014-09-25 07:13:58

+0

您提供的代碼中沒有任何內容會導致失敗。另外我也不太明白「第二個」的含義。你可以嘗試從'sortable'改爲'foreach',看看它是否有所作爲? – 2014-09-25 19:30:58

+0

我做了一個小提琴:http://jsfiddle.net/Amethi/cLLey9by/4/ 邁克爾,我的意思是它呈現數組中的第一個項目,但沒有更多,所以它錯誤的第二個數組項目。我會用foreach玩。 – Amethi 2014-09-25 20:06:44

回答

0

這是我成爲一個doofus;我列舉了簡單的js對象,而不是類別模型。一旦我將js對象轉換爲它的工作模式。

+0

你能分享我們的工作小提琴:)乾杯 – 2014-09-28 15:41:33