我有JSON对象;我们称之为模型;它有2个类型数组的属性。该模型还有一个函数“hasAnyFilterSelected”,它检查是否填充了任何数组属性。我有搜索按钮& UI上的2下拉列表。当用户单击搜索按钮时,会出现以下步骤:
1>将选定的值从下拉列表推送到模型的数组中 属性。
2> model.hasAnyFilterSelected()检查任何数组是否有值,在调试器中我看到模型填充了值。
3>如果是,则通过执行datasource.read()
刷新kendo网格4> kendo网格调用返回模型的“getFilters”方法,再次在调试器中我看到模型填充了值。
5>然后 以某种方式 再次调用hasAnyFilterSelected(),这次模型数组属性未定义。看起来kendo正在尝试再次序列化模型,这个时间模型有不同的实例,但我不确定。
net45
我想知道为什么会这样?我正确定义了JSON功能吗?这是首选方法吗?
答案 0 :(得分:0)
如果我理解正确,您的值会被保留,但您的功能会被覆盖或忽略? (正如你所指出的那样,当被复制到某个地方时可能会发生。)不要知道这第一步是否有效,但可能尝试将其写成具有原型函数的更确定的类:
var model_class = function() {
this.selectedTaxYears = [];
this.selectedStates = [];
}
model_class.prototype = {
hasAnyFilterSelected: function () {
return !(this.selectedTaxYears.length == 0 &&
this.selectedStates.length == 0)
}
var model = new model_class();
如果被覆盖,另一种方法是在单例库中的其他地方或仅在“窗口”中定义该功能。范围,然后使用' .apply':
调用它if ( model_hasAnyFilterSelected.apply( this ) ) {
//// etc
}