我在 CategoryModel 的集合中获得了一个可排序的枚举(可拖动的插件,扩展了foreach),该集合具有 CanCategoryBeDeleted 计算方法。此功能用于启用或不启用按钮。 对于集合中的第一个项目,它可以正常工作,但对于第二个项目,它会因以下错误而失败。集合中的所有CategoryModel都很好看。使用启用标记可以按预期呈现集合。
未捕获的ReferenceError:无法处理绑定" sortable:function (){return {data:categories,afterMove:$ root.orderCategories}}" 消息:无法处理绑定"启用:function(){return CanCategoryBeDeleted}"消息:未定义CanCategoryBeDeleted
标记是:
<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);
}
有谁知道我做错了什么?
答案 0 :(得分:0)
是我的一个人;我在枚举简单的js对象,而不是类别模型。一旦我将js对象转换为等效的模型,它就会起作用。