我有一个视图模型,它有几个集合属性和一些重复的逻辑。我需要能够添加一个新的空对象,删除一个对象,并确保每个集合至少有一个对象,如果它是唯一的对象,则应该禁用“删除”按钮。
为了提取这些常用函数,我扩展了 k endo.data.ObservableArray
:
function addEmpty() {
this.push({});
}
function hasMoreThanOne {
return this.length > 1;
}
var CoolObservableArray = kendo.data.ObservableArray.extend({
init: function(data) {
kendo.data.ObservableArray.fn.init.call(this, data);
this.addEmpty = addEmpty.bind(this);
this.hasMoreThanOne = hasMoreThanOne.bind(this);
}
});
问题在于hasMoreThanOne
功能。当我创建一个包含单个元素的数组时,“删除”按钮被禁用 - 没关系 - 但是当我添加新元素时,它不会被启用。
要刷新 UIget
需要调用 kendo 的函数,但它需要一个引用属性名称的参数,该参数会因 的每个实例而异CoolObservableArray
,因此我需要为每个集合编写重复函数,例如deleteXXXEnabled
、deleteYYYEnabled
等。如何避免它?
这里是问题再现的小提琴:http: //dojo.telerik.com/AFOMa/2