定義我有一個排序的枚舉(可拖動的插件,擴展一個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);
}
有誰知道我做錯了嗎?
你可以在JSFiddle中創建一個簡化的repro嗎? – nemesv 2014-09-25 07:13:58
您提供的代碼中沒有任何內容會導致失敗。另外我也不太明白「第二個」的含義。你可以嘗試從'sortable'改爲'foreach',看看它是否有所作爲? – 2014-09-25 19:30:58
我做了一個小提琴:http://jsfiddle.net/Amethi/cLLey9by/4/ 邁克爾,我的意思是它呈現數組中的第一個項目,但沒有更多,所以它錯誤的第二個數組項目。我會用foreach玩。 – Amethi 2014-09-25 20:06:44